当前位置:  开发笔记 > 数据库 > 正文

有没有办法使用约束或触发器来避免特定表上的行删除?

如何解决《有没有办法使用约束或触发器来避免特定表上的行删除?》经验,为你挑选了2个好方法。

有没有办法避免使用约束在特定表上删除行?

如果id为0,1或2,我想(例如)拒绝行删除

这是为了避免用户删除应用程序的主帐户,即使有人(错误地)直接使用sql尝试它,我也想避免使用它.

谢谢!

编辑:

这个问题的整个想法不是触及应用程序.这不是安全问题,我只需要知道是否可以使用约束或SQL Server所具有的任何其他东西来执行我所要求的(它不需要是标准的数据库解决方案).

编辑2:

代码示例非常非常赞赏:D



1> Bill Karwin..:

至于在约束中强制执行此操作,我的解决方案是创建从属表,因此无法删除引用的行.

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权限限制对依赖表的删除.



2> RedFilter..:

您可以通过编写针对相关表的DELETE触发的数据库触发器来执行此操作.如果ID无效,它需要做的就是抛出异常.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有