Мне интересно, можно ли запустить несколько транзакций DDL внутри транзакции. Меня особенно интересует SQL Server, хотя ответы с другими базами данных (как минимум, Oracle, PostgreSQL) также могут быть интересными.
Я делал некоторые "CREATE TABLE" и "CREATE VIEW" для созданной таблицы внутри транзакции, и, похоже, есть некоторые несоответствия, и мне интересно, не должны ли DDL не выполняться внутри транзакции..
Я мог бы, вероятно, переместить DDL за пределами транзакции, но Я хотел бы получить некоторые ссылки для этого. То, что я нашел до сих пор:
- Страница MSDN Уровни изоляции в компоненте Database четко указывает, что существуют ограничения на то, какие операции DDL можно выполнить в явной транзакции, которая работает под изоляцией моментальных снимков, но я не использую изоляцию моментальных снимков, и это должно приводить к ошибке.
- Это можно интерпретировать так, чтобы операции DDL могли выполняться в явной транзакции под разными уровнями изоляции?
- Руководство пользователя Oracle® Database Gateway для SQL Server # Указания DDL утверждает, что в данной транзакции может выполняться только один оператор DDL - это это справедливо и для SQL Server, используемого прямо?
Для Oracle:
- В вопросе SO Модули тестирования DDL-операторов, которые должны быть в транзакции, говорится, что Oracle делает неявное коммитирование для заявления DDL? (хотя ссылок нет)
Если это имеет значение, я делаю это с помощью Java через JTDS-драйвер JDBC.
b.r. Токо