如何回滚SQL更新命令?

Mar*_*hin 4 sql-server rollback sql-server-2008

在SQL Server 2008 R2中.是否可以在单个更新命令上执行回滚?

我知道在SO上还有其他类似的问题,但我没有看到2008 R2的具体问题,因此我可能会得到相同的答案,如果是这样,那么我们可以关闭这个线程.

我做了一个没有任何事务命令的简单更新:

UPDATE myTable SET col1=somevalue WHERE....
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 6

当然,您可以使用显式事务,例如

BEGIN TRAN
UPDATE ...
ROLLBACK
Run Code Online (Sandbox Code Playgroud)

但我不认为你在问这个问题?

如果您有该选项,SET IMPLICIT_TRANSACTIONS ON则在您明确执行此命令之前,不会提交或回滚该命令,但这不是默认行为.

默认情况下,事务是自动提交的,因此当命令成功完成时,将提交更新结果.如果更新遇到错误 - 包括连接在更新期间被终止,它将自动回滚.