SQL Server UNDO

Dra*_*cir 2 sql-server transactions

我是一名兼职开发人员(全职学生)和我正在工作的公司使用SQL Server 2005.我发现SQL Server的一个奇怪的事情是,如果你做一个涉及插入,更新等的脚本,那就没有任何真正的方法除了回滚或使用事务之外,撤消它.

您可能会说这两个选项出了什么问题?好吧,例如,如果有人做了更新语句并忘记放入一个WHERE子句,你突然发现自己更新了13k行,并且该表中的所有客户端突然被命名为'bob'.现在你有13k bobs的愤怒,因为"某人"忘记使用交易,如果你做回滚,你将撤消其他领域所需的关键变化.

在我的学习中,我有Oracle.在Oracle中,您可以先运行脚本,然后在发现没有任何错误时提交它.我想知道在SQL Server中是否有一些我错过的东西,因为我在开发人员世界中仍然相对较新.

Ste*_*nke 5

我不相信你错过了什么.使用事务来防止这些错误是最好的机制,它与Oracle用于保护最终用户的机制相同.不同之处在于Oracle隐式为您开始一个事务,而在SQL Server中您必须明确地执行它.


sha*_*esh 5

SET IMPLICIT_TRANSACTIONS是您可能正在寻找的.