在sql 查询分析器中运行update过程中点击停止,数据是否会回滚呢?
大师们,你们好!请教一个问题,我的数据库大概有56万左右条记录,昨天因为一次失误,本想更新其中一条记录的某个字段值,使用了update table set BussStatus=1 后面忘了跟查询条件了,执行后发现不对了,赶紧点击查询分析器中的停止按钮(取消执行查询),后来停止了,然后我有几个担心和疑问一直放心不下:
1、我担心这样会不会已经更改了数据库里的其它数据了?或者是否停止后查询等于并未执行update或者部分记录已修改了但是停止后会回滚?不是太懂SQL查询分析器的运行机制。
2、我记得update如果没有跟任何条件,应该是默认从第一条记录开始执行update的(我的数据表有设置了关键字段),不知是否是这样?但我列出首页1000条记录(关键字段ID:1-1000)并未有任何更动。
3、我用Lumigent Log Explorer for SQL Server v4.0.2花了1个多小时查询log,发现并未有update table set BussStatus=1的记录,所以现在我依然很不放心,在这种情况下到底会不会更新到数据库里的其它数据?
请大师们给予指点指点,释放我的疑惑!!!感激不尽!!!
------解决方案--------------------肯定回滚
------解决方案--------------------update 语句放在事务内!
------解决方案--------------------更新时这样:
select count(*) from tb where ..
然后
begin tran
update tb set col='xx' where ..
肉眼看影响行数,如果和select的相同,就commit tran,否则,可以rollback tran
------解决方案--------------------microsoft很强大 肯定回滚
------解决方案--------------------每一个update,insert语句是一个自动提交的事务,sql server会保证该事务的原子性
------解决方案--------------------该不会更新的
------解决方案--------------------5楼就是告诉你为什么不加begin transaction也可以 ~
------解决方案--------------------回滚