SQL Server终止后会回滚单个语句吗?

时间:2010-09-16 07:45:28

标签: sql-server tsql

我有一个带有单个UPDATE命令的语句。如果我手动终止它会回滚所有结果吗?

2 个答案:

答案 0 :(得分:3)

如果没有错误发生,则无法回滚此语句

Update table
Set MyCol = 'foo'
Where MyOtherCol = 'bar'

但是,您可以在SQL中执行以下操作:

    begin transaction

    Update table
    Set MyCol = 'foo'
    Where MyOtherCol = 'bar'

然后执行您可能需要执行的任何检查。如果一切正常,那么您可以运行以下内容。

commit transaction

如果您需要取消更新,可以运行此

rollback transaction

答案 1 :(得分:3)

如果您终止发布更新的连接,或以其他方式设法取消查询,则将回滚更新。 SQL中的每个DML语句都在事务的上下文中运行 - 如果不存在,SQL Server将automatically create一个,并在语句完成后提交它。