有没有办法避免使用约束在特定表上删除行?
如果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权限限制对依赖表的删除.
您可以通过编写针对相关表的DELETE触发的数据库触发器来执行此操作.如果ID无效,它需要做的就是抛出异常.