我有两个表 Table1 和 Table2。其中 table1 列主键被称为 table2 列作为外键。
现在,当我从表 2 中删除具有表 1 外键列的记录时,我必须显示一条违反约束的错误消息。
我有两个表 Table1 和 Table2。其中 table1 列主键被称为 table2 列作为外键。
现在,当我从表 2 中删除具有表 1 外键列的记录时,我必须显示一条违反约束的错误消息。
如果我做对了,表 1 中的 A 列(比如说)引用了表 2 中的 B 列(比如说)。你可以做的是,如果它的任何子项仍然存在于表中,则将其设置ON DELETE
为将阻止从表 2 中删除记录NO ACTION
1.
您可以通过以下方式做到这一点:
ALTER TABLE TABLE1 ADD FOREIGN KEY (A) REFERENCES TABLE2 (B) ON DELETE NO ACTION;
如果您从子表而不是父表中删除记录,则不会违反约束。删除子记录是正常的。例如,如果我有一个 user 表和一个包含 users 表中的 userid 的 photos 表,如果我想删除照片,为什么要停止该操作并抛出错误?删除子记录不会同时删除父记录。
如果您真的想这样做,那么您必须通过触发器来完成(确保处理多个记录删除),或者如果 FK 是必填字段,那么根本不授予删除表的权限。请注意,这可能意味着即使您尝试删除,也永远无法删除任何记录。一个简单的方法可能是在应用程序中不提供删除功能。
我怀疑您真正需要什么才能更好地定义需求文档中的需求。在处理数百个数据库的 30 多年中,我从未见过有人需要此功能。