Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
RAD-Studio 2009 Pro
|
AW: Firebird: DDL und DML in einer Transaktion
22. Jul 2010, 08:25
Neue Tabelle anlegen (alle Spalten der alten Tabelle + neue Spalte)
Commit
Alte in neue Tabelle kopieren
Daten in neuer Spalte setzen
Commit
Alte Tabelle löschen und neue Tabelle umbenennen
Commit
Das geht allerdings nur, wenn das Löschen der alten Tabelle nicht durch Fremdschlüssel und dgl ausgeschlossen ist.
Alternative:
Den aktuellen Fortschritt der Transaktion in einer Hilfstabelle speichern. Wenn die Anwendung so kritisch ist, dass während der Änderung keinesfalls andere Prozesse auf die Tabelle zugreifen dürfen, könntest Du über Trigger und eine Environment Variable den Zugriff von anderen Prozessen auf die Tabelle zu verhindern, solange Deine Transaktion im Laufen ist.
|