当你有一个记录列表时,有没有办法在你尝试删除这些记录之前检查这些记录中的每一个是否有外键引用?
例如,如果我有一个借阅者列表和一个图书列表,那么如果一个借阅者仍有借阅的图书,那么您应该无法从系统中删除该借阅者。(然而,我的实际系统比这复杂得多 - 更多的表。)
我想从任何有借书的借款人中删除删除选项(在该示例中)。
如果我尝试删除具有外键引用的记录,则会收到以下错误:
数据库访问失败:无法删除或更新父行:外键约束失败 (
dbname
.tablename
, CONSTRAINTfkfieldid
FOREIGN KEY (fieldid
) REFERENCEStablename
(fieldid
))
一种解决方案是编写一个查询来检查记录列表中的每条记录是否在它可能被引用的任何可能的表中具有任何外键引用。
但是,如果我希望在我的内容管理系统中显示一个包含 100 条记录的列表,并且我必须运行 100 个子查询才能显示该列表,这显然是非常低效的!
最终用户在尝试删除记录时会感到困惑,但他们不能,因为该数据在其他地方“正在使用”,所以我宁愿删除删除选项以避免混淆。
关于什么是最好的事情的任何想法?谢谢。