Больше нет? Облом.
Я главным образом использую SQL Server, и это делает. Я знаю, что Oracle нет, но я думал, что Oracle может быть отклонением.
В SQL Server я вполне уверен, что вы можете запускать несколько операторов DDL в одной транзакции, хотя я также думаю, что есть несколько ограничений (о которых я все забыл). Вы можете создать, изменить или отбросить большинство вещей и откатить их, если хотите. Red-Gate SQL Compare (инструмент, который мне нравится) использует это преимущество.
Проблема заключается в том, что ваша область транзакции становится довольно интересной ... Когда вы включаете системные каталоги в транзакцию обновления (DDL), вы рискуете получить некоторые действительно важные блокировки и можете заблокировать доступ к системным каталогам. Пользователи не могут многое сделать, если их запросы не могут найти их таблицы в каталогах!
В целом, однако, удобно иметь возможность включать DDL в транзакции с несколькими операторами.
Более полезно то, что команда SQL Server DDL TRUNCATE
также может быть элементом транзакции с несколькими операторами . Вы можете усечь целевую таблицу (очень быстро), построить ее, а затем сделать коммит, если вам нравится результат. Если что-то пойдет не так, вы откатываетесь и вуаля !, как будто вы никогда не мешали столу. Пространство журнала также минимизировано. Я пользуюсь этим довольно часто.