如何在SQL Server会话中设置自动提交?

时间:2009-07-07 03:31:47

标签: sql-server session autocommit

如何在SQL Server会话中设置自动提交?

4 个答案:

答案 0 :(得分:80)

您可以通过将implicit_transactions设置为OFF来启用自动提交:

SET IMPLICIT_TRANSACTIONS OFF

当设置为ON时,它将返回隐式事务模式。在隐式事务模式中,您所做的每个更改都会启动您必须手动提交的事务。

也许一个例子更清楚。这将对数据库进行更改:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
COMMIT TRANSACTION

这不会对数据库进行更改:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

以下示例将更新一行,然后抱怨没有要提交的事务:

SET IMPLICIT_TRANSACTIONS OFF
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

就像Mitch Wheat所说,自动提交是Sql Server 2000及以上的默认设置。

答案 1 :(得分:46)

我想要一种更永久,更快捷的方式。因为在编写实际的Update / Insert查询之前,我倾向于忘记添加额外的行。

我是通过选中选项中的 SET IMPLICIT_TRANSACTIONS 复选框来完成的。 导航到选项在Microsoft SQL Server Management Studio中选择工具>选项>查询执行> SQL Server> ANSI

确保在执行完查询后执行commitrollback。否则,您将运行查询的表将被其他人锁定。

答案 2 :(得分:8)

Autocommit是SQL Server的默认事务管理模式。 (SQL 2000以后)

参考:Autocommit Transactions

答案 3 :(得分:2)

使用SQLServer 2005 Express,我发现即使自动提交关闭,也会在没有实际从Management Studio会话发出提交命令的情况下提交到Db表中的插入。唯一的区别是,当 autocommit关闭时,我可以回滚所有插入;使用* 自动提交 ,我不能。 * 实际上,我错了。关闭自动提交模式后,我只会在发出命令的QA(查询分析器)窗口中看到更改。如果我弹出一个新的QA(查询分析器)窗口,我看不到第一个窗口(会话)所做的更改,即它们没有提交!我必须发出显式提交或回滚命令,以使其他会话(QA窗口)可见更改 - 我的错!事情正常。