有没有办法避免使用约束在特定表上删除行?
如果 id 为 0,1 或 2,我想(例如)拒绝删除行
这是为了避免用户删除应用程序的主帐户,即使有人尝试(错误地)直接使用 sql,我也想避免它。
谢谢!
编辑:
这道题的整体思路是不接触应用。这不是安全问题,我只需要知道是否可以用约束或 SQL Server 具有的任何其他东西来做我要求的事情(它不需要是标准的数据库解决方案)。
编辑 2:
代码示例非常非常感谢 :D
最佳答案
就在约束中强制执行此操作而言,我的解决方案是创建一个从属表,因此无法删除引用的行。
CREATE TABLE NoKillI (
id INT NOT NULL, FOREIGN KEY (id) REFERENCES Accounts(id) ON DELETE RESTRICT
);
INSERT INTO NoKillI (id) VALUES (0);
INSERT INTO NoKillI (id) VALUES (1);
INSERT INTO NoKillI (id) VALUES (2);
现在没有人可以删除 Accounts
中 id 值为 0、1 或 2 的行,除非他们先删除 NoKillI
中的相应行。您可以使用 SQL 权限限制对从属表的删除。
关于sql - 有没有一种方法可以避免使用约束和触发器在特定表上删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366883/