匆忙中,我愚蠢地运行了一个语句来更新表,而没有用where
语句对其进行限定。因此,它开始更新表中的所有记录。
我立即注意到了这个错误,并在SQL Server Management Studio中点击了"取消执行"按钮,但花了一分钟才停止运行。
所以我的问题是,它是回滚了更改还是直到被告知停止才进行了更改?
我无法通过查看它们来判断哪些记录已更新。如果它确实进行了任何更改,我将不得不恢复该表。
谢谢。
我想跑:
Update tableA
set newdate = '2019-01-01'
where account = 'abc'
但相反,我跑了:
Update tableA
set newdate = '2019-01-01'
数据库是事务类型数据库。
SQL Server 默认具有默认的事务行为。这意味着您在查询编辑器中运行的每个句子都如下所示:
BEGIN TRANSACTION
<YOUR COMMAND>
COMMIT TRANSACTION
因此,如果您在完成之前取消了交易,则应回滚事务。
如果查询在取消之前尚未完成,那么是的,它已回滚。要么执行整个更新,要么没有任何更改。