有没有一种方法可以避免使用约束在特定表上删除行?
我想(例如)拒绝删除行,如果id为0,1或2
这是为了避免用户删除应用程序的主帐户,即使有人直接(使用错误)尝试使用sql,我也希望避免使用该帐户。
谢谢!
编辑:
这个问题的整体思想是不碰应用程序。这不是安全问题,我只需要知道是否可以用约束或SQL Server拥有的其他任何方式来执行我所要求的操作(不需要成为标准的db解决方案)。
编辑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);
现在,没有人可以删除AccountsID值为0、1或2的行,除非他们首先删除中的对应行NoKillI。您可以使用SQL特权来限制从属表的删除。
Accounts
NoKillI