sql - 有没有一种方法可以避免使用约束和触发器在特定表上删除行?

标签 sql sql-server database constraints

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

如果 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/

相关文章:

database - SQL 错误 : ORA-01039: insufficient privileges on underlying objects of the view

SQL查询(Join without duplicates)

mysql - SQL 创建查询并重定向到文件

sql-server - SQL Server Profiler : Get stored procedure name

sql - 合并SQL Server中行数不同的两个表

database - 内存高效的大型数据集流式传输到 S3

database - Wordpress CMS 和数据库的新功能

mysql - 基于 SQL MIN() 选择额外字段

jquery - 查找MySQL表中重复字段值的数量

sql - 在日期范围内查找匹配值并返回值