我想知道是否可以在事务中运行多个 DDL 语句。我对 SQL Server 特别感兴趣,尽管其他数据库(至少是 Oracle、PostgreSQL)的答案也可能很有趣。
我一直在为事务中创建的表做一些“CREATE TABLE”和“CREATE VIEW”,似乎有些不一致,我想知道 DDL 是否不应该在事务中完成......
我可能会将 DDL 移到事务之外,但我想为此获得一些参考。到目前为止我发现了什么:
- 数据库引擎中的MSDN 页面隔离级别清楚地表明,在快照隔离下运行的显式事务中可以执行哪些 DDL 操作存在限制- 但我没有使用快照隔离,这应该会导致错误。
- 这可以解释为可以在不同隔离级别下的显式事务中执行 DDL 操作吗?
- Oracle® Database Gateway for SQL Server 用户指南#DDL 语句指出在给定事务中只能执行一个 DDL 语句- 这对于直接使用的 SQL Server 是否也有效?
对于甲骨文:
- 在 SO 问题单元测试需要在事务中的 DDL 语句中,据说 Oracle 确实为 DDL 语句隐式提交?(即使没有参考)
如果这很重要,我将通过 JTDS JDBC 驱动程序使用 Java 执行此操作。
br Touko