Tou*_*uko 29 sql sql-server ddl transactions jtds
我想知道是否可以在事务中运行多个DDL语句.我对SQL Server特别感兴趣,尽管其他数据库(至少Oracle,PostgreSQL)的答案也很有趣.
我一直在为事务中创建的表做一些"CREATE TABLE"和"CREATE VIEW",似乎有些不一致,我想知道DDL是否不应该在事务中完成...
我可能会在事务之外移动DDL,但我想得到一些参考.我到目前为止所发现的:
对于Oracle:
如果它重要,我通过JTDS JDBC驱动程序使用Java.
br Touko
Dav*_*sel 13
我知道大多数数据库都有限制,但Postgres没有.您可以在事务中运行任何数字表创建,列更改和索引更改,并且其他用户单元COMMIT成功后看不到更改.这就是数据库应该如何!:-)
对于SQL Server,您可以在事务内部运行DDL,但SQL Server不会对版本元数据进行操作,因此在事务提交之前,其他人可以看到更改.但是如果你在一个事务中,一些DDL语句可以回滚,但是哪些是有效的,哪些不可用,你需要运行一些测试.
莫非在MS SQL中,运行DDL和DML语句时会触发隐式事务。如果您关闭此功能是否有帮助,请使用 SET IMPLICIT_TRANSACTIONS
编辑:另一种可能性 - 您不能将 CREATE VIEW 与同一批次中的其他语句结合起来。创建表就可以了。您可以使用 GO 分隔批次。
EDIT2:您可以在一个事务中使用多个DDL,只要用GO分隔即可创建不同的批次。
| 归档时间: |
|
| 查看次数: |
22183 次 |
| 最近记录: |