sql - 防止任何表上的意外更新/删除

标签 sql sql-server triggers

我有几次不小心更新了生产表的所有记录。 缺乏关注等等......

我听说 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/

相关文章:

mysql - 使用 SQL 计算访问次数,除了来自 2 个最大访问者的访问次数

sql - 字符串 '{?District}' 在 SQL 中的计算结果是什么

c# - Entity Framework 将多个属性序列化到一列

MySQL触发器插入之前

docker - 在 kubernetes 中创建或删除 pod 时触发事件以在某些数据库中写入或删除其 IP

php - 更新数据库当前字段

SQL Server - 测试存储过程的结果

sql-server - SQL Server 2008 R2 Varbinary 最大大小

sql - 根据条件使用特定的数据库

php - 插入表后在mysql触发器中发送http请求