我有几次不小心更新了生产表的所有记录。 缺乏关注等等......
我听说 MySQL 有一个编译/运行时开关来防止此类事故。 就像,如果我想做一个
UPDATE Table SET Field=0
由于缺少 WHERE 子句,这不会编译/运行。 如果您真的想要更新全部,您可以
UPDATE Table SET Field=0 WHERE 42=42
对于 MS SQL 有什么想法吗?
我在网上找到了一些关于触发器的答案。我想这会有点贵。 这意味着我必须在每个必要的 table 上放置触发器。
最佳答案
如果您尝试为每个人进行此设置,则可以通过打开 IMPLICIT_TRANSACTIONS 来关闭 SQL Server 的自动提交功能。 See here .
如果您只关心您,则上述内容也可以在您的 session 中使用SET IMPLICIT_TRANSACTIONS ON
。然后你必须实际调用 COMMIT 来使任何事情粘住。 See here .
关于sql - 防止任何表上的意外更新/删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438055/