レコードのリストがある場合、これらのレコードを削除する前に、これらの各レコードに外部キー参照があるかどうかを確認する方法はありますか?
例として、借り手のリストと本のリストがある場合、借り手がまだ貸し出し中の本を持っている場合、その借り手をシステムから削除することはできません。(ただし、私の実際のシステムはそれよりもはるかに複雑です。より多くのテーブルがあります。)
貸出中の本を持っている借り手から削除オプションを削除したいと思います (その例で)。
外部キー参照を含むレコードを削除しようとすると、次のようなエラーが発生します。
データベース アクセスに失敗しました: 親行を削除または更新できません: 外部キー制約が失敗しました (
dbname
.tablename
, CONSTRAINTfkfieldid
FOREIGN KEY (fieldid
) REFERENCEStablename
(fieldid
))
1 つの解決策は、レコードのリスト内の各レコードに、参照可能なテーブルのいずれかに外部キー参照があるかどうかを確認するクエリを作成することです。
ただし、コンテンツ管理システムのテーブルから 100 レコードのリストを表示したい場合、そのリストを表示するために 100 のサブクエリを実行する必要がある場合、明らかに非常に非効率的です!
エンド ユーザーがレコードを削除しようとすると混乱しますが、そのデータは他の場所で「使用中」であるため削除できません。混乱を避けるために、削除するオプションを削除することをお勧めします。
何をするのが最善かについてのアイデアはありますか?ありがとう。