<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Datenbank Anleitungen > Erstellen eines kumulativen Skripts |
Zur Effizienzsteigerung beim Datenbankupdate ist es möglich, mehrere einzelne Updateskripte per Batchdatei, mit einem gewöhnlichen Texteditor oder mit einem Mergetool hintereinander zu kopieren um damit ein einziges Gesamtskript in FlameRobin oder der InterBase Console zu Laden und zur Ausführung zu bringen.
Bitte lesen Sie sich vorher die Bemerkungen in den einzelnen Skripten durch, um festzustellen, ob manuelle Anpassungen notwendig sind (vor allem zeichensatzbedingt).
Wie für jedes Datenbankskript gilt auf für das kumulierte Skript, dass dies vorher in einer Testumgebung Ihrer Datenbank getestet werden muss.
Sollten Sie bei Ihrem Test des kumulativen Skripts den folgenden Fehler erhalten, nutzten Sie nicht die aktuell verfügbaren Skripte:
Error at line x - violation of PRIMARY or UNIQUE KEY constraint "PK_UPDATES" on tabel "UPDATES" / SQL - INSERT into UPDATES(UPNAME,UPBESCHREIBUNG)VALUES('UpdBCxx','Beschreibung')
Ab sofort werden Updateskripte bereits so ausgeliefert, dass dieser Fehler nicht mehr auftritt. Somit entfällt diese Abschnitt und dient Interessierten nur zur Erläuterung des Problems.
In der letzten Zeile eines jeden einzelnen Skripts wird zur Kontrolle des Versionstands der Datenbank ein neuer Eintrag auf der Tabelle UPDATES erzeugt. Dieser Eintrag enthält neben der Beschreibung des Skriptes auch den Ausführungszeitpunkt (Zeitstempel) als Primärschlüssel der Tabelle: INSERT into UPDATES (UPNAME,UPBESCHREIBUNG) VALUES ('UpdBCxx','Beschreibung');.
Da Interbase im Gegensatz zu Firebird im Zeitstempel keine Hundertstelsekunden bereitstellt, kann es bei hoher Ausführungsgeschwindigkeit des zuvor genannten Gesamtskripts dazu kommen, dass zwei Einträge in die UPDATE-Tabelle mit ein- und demselben Zeitstempel eingefügt werden sollen, was jedoch zu einer Verletzung des Primärschlüssels und somit zum Abbruch des Skriptes mit folgendem Fehler führt:
Error at line x - violation of PRIMARY or UNIQUE KEY constraint "PK_UPDATES" on tabel "UPDATES" / SQL - INSERT into UPDATES(UPNAME,UPBESCHREIBUNG)VALUES('UpdBCxx','Beschreibung')
Um diese Problematik in einem Gesmatsktript zu umgehen, sind die einzelnen SQL-Statements zum Einfügen der Einträge auf die Tabelle UPDATES von:
INSERT into UPDATES (UPNAME,UPBESCHREIBUNG) VALUES ('UpdBCxx','Beschreibung');
auf:
INSERT into UPDATES (UPTIMESTAMP, UPNAME,UPBESCHREIBUNG) VALUES (CURRENT_TIMESTAMP + 0.00001, 'UpdBCxx','Beschreibung');
abzuändern.