昨天我问了这个问题Funky Delete Issue
现在我想现在如何安全删除。
那么我如何使用提交和事务以及语法糖来覆盖我的@ $$,因为昨天我笨拙地删除了51,000行。我有一个备份,但我仍然认为HOLY ^%$#太容易了。
那我该怎么做呢?
DELETE FROM bBoxHeader
WHERE bBoxHeader.bHeaderId <> '1099'
-- Ooops meant that to be equal. How do I roll back?
如何包装,所以我不会吹掉51000行
答案 0 :(得分:14)
每当您针对生产数据进行未经验证的临时DML时,您应始终将其包含在BEGIN TRANSACTION中,并使用后续的COMMIT和ROLLBACK。如果你在没有检查的情况下运行它,那么然后意识到你搞砸了它,你可以回滚它。否则你可以提交它。
BEGIN TRANSACTION;
DELETE ... WHERE ...
-- COMMIT TRANSACTION;
---^^^^^^ if the number of rows affected is correct, highlight this & execute
-- ROLLBACK TRANSACTION;
---^^^^^^^^ otherwise highlight this and execute
请注意,这也可能导致你说什么,因为如果你忘记运行回滚或提交,然后去吃午餐或回家周末,你可能会回来看看你的粉红色单。