![]() |
Datenbank: Firebird • Version: 2 • Zugriff über: egal
Firebird: DDL und DML in einer Transaktion
Hallo #,
bisher war ich der Meinung, dass ein Alter Table Tab1 Add Feld1 Char(1) + Update Tab1 Set Feld1='1' in einer Transaktion ausgeführt werden kann. Nach ![]() geht aber ebend jenes nicht. Weiss jemand darüber Bescheid ? Danke Heiko |
AW: Firebird: DDL und DML in einer Transaktion
AFAIK kann DDL nur Oracle in einer speziellen Transaktionsart "verpacken".
|
AW: Firebird: DDL und DML in einer Transaktion
Hallo Heiko,
richtig, DML und DDL sollten in einer Transaktion nicht vermischt werden. In Oracle stellt sich diese Frage gar nicht, weil DDL Statements automatisch committed werden, d.h. hier gibt es über ein Rollback kein zurück. |
AW: Firebird: DDL und DML in einer Transaktion
Hallo,
wie kann ich dann aber eine Tabelle von einem "definierten Zustand" Feld 1, Feld 2 nach Feld 1, Feld 2, Feld 3 (Werte belegt) ändern ? Heiko |
AW: Firebird: DDL und DML in einer Transaktion
Geht nur in 2 Schritten:
-Neues Feld anlegen -Update |
AW: Firebird: DDL und DML in einer Transaktion
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. |
AW: Firebird: DDL und DML in einer Transaktion
Eigentlich sollte es auch in der selben Tabelle gehen
|
AW: Firebird: DDL und DML in einer Transaktion
Hallo,
* Neues Feld anlegen (wenn NOT NULL, dann mit DEFAULT Definition) * COMMIT * Update ausführen * COMMIT |
AW: Firebird: DDL und DML in einer Transaktion
Zitat:
|
AW: Firebird: DDL und DML in einer Transaktion
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz