Hallo!
Bei JEDER Prüfung eines Tabellennamens greifst du aber auf die DB zu, ohne neue Informationen zu bekommen.
Ähm, Du möchtest eine Lösung haben, die überprüft, ob in der Datenbank schon eine Tabelle existiert, weil Du der Datenbank eine Tabelle hinzufügen möchtest.
Nein, ich möchte eine Anzahl Tabellen (eins von mehreren Projekten in Datenbank A) von DB A nach DB B kopieren. Dabei kann der Tabellenname wechseln. Die Namen sind im Programm hinterlegt:
Datenbank A Datenbank B
--------------- -------------
(Zugriffsdaten) (Zugriffsdaten)
xyz_adressen abc_adressen
def_anwesenheit abc_anwesenheit
...
Dazu lese ich die Tabellennamen von DB B einmalig ein und durchlaufe dieses:
1. Es dürfen keine Tabellennamen mit tmp_* beginnen (dann wurde die letzte Datensicherung nicht korrekt beendet)
wenn fehlerfrei: 2. Kopiere Tabellen von DB A als tmp_*
wenn fehlerfrei: 3. Lösche alle Tabellen, die mit sic_* anfangen (die vorletzte Datensicherung)
wenn fehlerfrei: 4. Benenne die bisherigen um nach sic_*
wenn fehlerfrei: 5. Entferne das tmp_ vor dem Namen.
Die Sicherheits-Datenbank ist für Benutzer gesperrt. Sie wird überhaupt nicht benutzt, solange die Original-Datenbank erreichbar ist. Falls die DB oder der Provider ausfällt, können Programme und DB B freigegeben werden.
Allerdings könnte die Ausgangs-Datenbank während der Kopie von anderen Benutzern verändert werden, sopdass die kopierten Tabellen gegeneinander nicht stimmen.
Da muss ich mir noch eine Sperre einfallen lassen.
Kann man MySQL fragen, ob gerade eine User zugreift (ein handle offen ist)?
LG Kalle