26

我已经通过 SQL Server Manager 对我的记录进行了一些更新。

由于 Update 语句没有明确提交,我正在尝试手动编写它。

Update mytable
set status=0;
Commit;

我收到消息,因为 Commit 没有开始事务

4

2 回答 2

49

SQL Server Management Studio 启用了隐式提交,因此所有执行的语句都被隐式提交。

如果您来自默认情况下不自动提交命令的 Oracle 背景,这可能是一件可怕的事情,但这并不是什么大问题。

如果您仍想使用 ad-hoc 事务,您可以随时执行

BEGIN TRANSACTION

在 SSMS 中,然后系统等待您提交数据。

如果您想复制 Oracle 行为并启动隐式事务,每当发出一些 DML/DDL 时,您可以设置 SET IMPLICIT_TRANSACTIONS 复选框

Tools -> Options -> Query Execution -> SQL Server -> ANSI
于 2013-09-26T11:12:22.923 回答
6

与 oracle 不同,Sql server 不需要提交,除非您使用事务。
在您的更新语句之后,表将立即被提交,在这种情况下不要使用 commit 命令。

于 2013-09-26T11:12:09.713 回答