使用回滚停止查询是否可以保证回滚

w00*_*977 6 sql sql-server

说我有这样的查询:

BEGIN Transaction
UPDATE Person SET Field=1
Rollback
Run Code Online (Sandbox Code Playgroud)

有一亿人.二十分钟后我停止了查询.SQL Server是否会回滚更新的记录?

Jea*_*ard 8

单个更新不会更新某些行.它将全部更新或0.

因此,如果您取消查询,则不会更新任何内容.

这是SQL Server遵循的原子数据库系统.

换句话说,你不必在最后做回滚,无论如何都没有提交.

当您取消查询时,它仍将保持锁定,直到所有内容都回滚,因此无需恐慌.

您可以自己测试,执行长查询,取消它,您会注意到在该过程真正结束之前需要一段时间.