Ice*_*man 1 sql sql-server sql-server-2008
前几天我读了一篇文章,展示了如何在假设类型场景中运行 SQL 更新、插入或删除。我不记得他们谈到的参数,现在我找不到这篇文章。不确定我是否在做梦。
无论如何,有谁知道 SQL2008 中是否有一个参数可以让您尝试插入、更新或删除而不实际提交它?它实际上会记录或显示它会更新什么。如果它的行为符合您的预期,您可以删除该参数并运行它。
我不知道任何支持事务的 SQL 服务的 SQL2008 特定功能,您可以执行以下操作:
例如:
BEGIN TRANSACTION
-- make changes
DELETE people WHERE name LIKE 'X%'
DELETE people WHERE name LIKE 'D%'
EXEC some_proc_that_does_more_work
-- check the DB state after the changes
SELECT COUNT(*) FROM people
-- undo
ROLLBACK TRANSACTION
-- confirm the DB state without the changes
SELECT COUNT(*) FROM people
Run Code Online (Sandbox Code Playgroud)
(您可能更喜欢在开始事务之前而不是在回滚事务之后执行可选的“确认”步骤,但我总是这样做,因为它将两个可能相同的代码部分保留在一起更容易编辑)
如果您使用类似的东西而不是 SQL2008 特定的东西,那么该技术也应该可以转移到其他 RDBS(如果需要,只需更新语法)。