【发布时间】:2012-08-24 08:31:03
【问题描述】:
问题:
通常,您可以通过回滚来撤消 sql 命令。
BEGIN TRY
BEGIN TRANSACTION
/* run all your SQL statements */
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
我现在的问题:
如果“一个”这样做了
UPDATE TABLE_X SET FIELD_X = 'bla'
GO
在SSMS中(注意最后的go)忘记指定WHERE子句, 是否有可能(以及如何)回滚 SSMS 在其中执行此命令的隐式事务(最后带有 go 的语句在事务中隐式执行)?
注意:
我没有这样做,但我的一位同事几天前做了(没有去)。
我解除了他造成的伤害(幸运的是,我在他这样做之前 0.5 小时做了备份),但对于未来,知道这一点会很好,因为这也发生在我身上。
【问题讨论】:
-
哦,同事,是吗? :)
-
@podiluska: xD 真的是这样!我知道更新有多危险,因为大约一年前,同样的事情发生在我身上,包含翻译的表格(自从我知道,根本问题是这个思考过程:它只是一个更新,可能会出错。 ..) ;)
-
您始终可以自定义默认的 SSMS 新查询模板以包含
begin tran; rollback tran
标签: sql sql-server sql-server-2008 transactions ssms