sql - 是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?

标签 sql sql-server transactions ddl jtds

我想知道是否可以在一个事务内运行多个 DDL 语句。我对 SQL Server 特别感兴趣,尽管其他数据库(至少是 Oracle、PostgreSQL)的答案也可能很有趣。

我一直在为事务内创建的表执行一些“CREATE TABLE”和“CREATE VIEW”,似乎存在一些不一致,我想知道 DDL 是否不应在事务内完成。 .

我可能可以将 DDL 移到事务之外,但是 我想得到一些这方面的引用。到目前为止我发现了什么:

对于甲骨文:

如果有什么重要的事情,我会通过 JTDS JDBC 驱动程序使用 Java 来完成此操作。

b.r。灯子

最佳答案

我知道大多数数据库都有限制,但 Postgres 没有。您可以在事务中运行任意数量的表创建、列更改和索引更改,并且在 COMMIT 成功后,其他用户无法看到这些更改。数据库就应该是这样的! :-)

对于 SQL Server,您可以在事务内运行 DDL,但是 SQL Server does not version metadata ,因此在事务提交之前,其他人可以看到更改。但是some DDL statements can be rolled back if you are in a transaction ,但是对于哪些有效,哪些无效,您需要运行一些测试。

关于sql - 是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043598/

相关文章:

mysql - 如何进行大量选定的更新

design-patterns - 对象级事务管理模式

sql-server - 在单个更新语句上使用事务

c# - 将 C# 生成的校验和与 SQL Server 生成的校验和进行比较

mysql - 使用 EntityFramework 6 和 MySql 的 TransactionScope

sql - 使用CTE的相邻列表和递归查询,如何回填?

mysql - 直接从外键到外键连接表

sql - 如何将两个表合并在一起,选择具有较高值的​​列,而无法使用 MERGE 语句?

sql - 基于 CSV SQL 的批量插入更新列

sql - 如何单独安装localdb?