我是一名兼职开发人员(全职学生)和我正在工作的公司使用SQL Server 2005.我发现SQL Server的一个奇怪的事情是,如果你做一个涉及插入,更新等的脚本,那就没有任何真正的方法除了回滚或使用事务之外,撤消它.
您可能会说这两个选项出了什么问题?好吧,例如,如果有人做了更新语句并忘记放入一个WHERE
子句,你突然发现自己更新了13k行,并且该表中的所有客户端突然被命名为'bob'.现在你有13k bobs的愤怒,因为"某人"忘记使用交易,如果你做回滚,你将撤消其他领域所需的关键变化.
在我的学习中,我有Oracle.在Oracle中,您可以先运行脚本,然后在发现没有任何错误时提交它.我想知道在SQL Server中是否有一些我错过的东西,因为我在开发人员世界中仍然相对较新.
我不相信你错过了什么.使用事务来防止这些错误是最好的机制,它与Oracle用于保护最终用户的机制相同.不同之处在于Oracle隐式为您开始一个事务,而在SQL Server中您必须明确地执行它.
SET IMPLICIT_TRANSACTIONS是您可能正在寻找的.