我知道更新,插入,删除以自动提交模式启动事务,我想问一下选择语句是否也在自动提交模式下创建自己的事务,还是不需要?我也想知道 DDL 是否自动提交并开始他们自己的事务
Ps:如果这可能会使答案从一个 DBMS 到另一个不同,我正在使用 SQL 服务器。
我知道更新,插入,删除以自动提交模式启动事务,我想问一下选择语句是否也在自动提交模式下创建自己的事务,还是不需要?我也想知道 DDL 是否自动提交并开始他们自己的事务
Ps:如果这可能会使答案从一个 DBMS 到另一个不同,我正在使用 SQL 服务器。
自动提交模式是 SQL Server 数据库引擎的默认事务管理模式。每个 Transact-SQL 语句在完成时都会提交或回滚。如果语句成功完成,则提交;如果遇到任何错误,则回滚。
甚至选择或 DDL 语句都有自己的隐式事务,因此它们具有自动提交功能。但通常一个选择没有什么可提交的。
您可以使用事务 DMV来验证这一点。例如,如果我启动一个长时间运行的
SELECT
查询,那么以下查询将至少返回一行:示例结果集:
您可以对 DDL 语句使用相同的方法,但值得考虑如果
ALTER TABLE
在完成之前失败会发生什么。您希望将表恢复到原始状态,对吗?否则您的数据库将损坏。事务是允许回滚语句的机制。每当语句修改数据库中的数据以避免数据库损坏时,您将拥有一个带有日志记录的事务。所以是的,DDL 语句必须使用事务。