Die meisten nicht? Schade.
Ich benutze hauptsächlich SQL Server und das tut es auch. Ich weiß, dass Oracle dies nicht tut, aber ich dachte, Oracle könnte eine Abweichung sein.
Ich bin mir ziemlich sicher, dass Sie in SQL Server mehrere DDL-Anweisungen in einer einzigen Transaktion ausführen können, obwohl ich auch der Meinung bin, dass es einige Einschränkungen gibt (die ich alle vergessen habe). Sie können die meisten Dinge erstellen, ändern oder löschen und sie zurücksetzen, wenn Sie möchten. Red-Gate SQL Compare (ein Tool, das ich liebe) nutzt dies aus.
Das Problem dabei ist, dass Ihr Transaktionsumfang ziemlich interessant wird. Wenn Sie die Systemkataloge in eine Aktualisierungstransaktion (DDL) einbeziehen, laufen Sie Gefahr, einige wirklich wichtige Sperren zu erhalten, und Sie können den Zugriff auf die Systemkataloge blockieren. Benutzer können nicht viel tun, wenn ihre Abfragen ihre Tabellen nicht in den Katalogen finden!
Alles in allem ist es jedoch praktisch, DDL in eine Transaktion mit mehreren Kontoauszügen einbeziehen zu können.
Sinnvollerweise kann der SQL Server-DDL-Befehl TRUNCATE
auch ein Element einer Transaktion mit mehreren Anweisungen sein . Sie können eine Zieltabelle abschneiden (sehr schnell), sie erstellen und dann ein Commit ausführen, wenn Sie das Ergebnis mögen. Wenn etwas schief geht, rollbackst du und voila !, es ist, als hättest du den Tisch nie gestört. Der Protokollspeicherplatz wird ebenfalls minimiert. Ich nutze das ziemlich oft.