1つのtagテーブルと3つtableAのテーブルがありtableB、 3つのテーブルとtableC一緒にタグ付けでき、それらを結合するテーブルがあります。tableA_tagtableB_tagtableC_tag
私のアプリケーションでは、からタグを削除できますtableA。tableBまたはtableC、そのうちの1つで現在使用されているタグのみを保持したいと考えています。これまでに、次のトリガーを作成しました。
CREATE TRIGGER plop after DELETE
ON tableA_tag
FOR EACH row
DELETE FROM tag
WHERE tag.id = old.tag_id
AND (SELECT Sum(countTags.c) AS s
FROM (SELECT Count(*) AS c
FROM tableC_tag
WHERE tag_id = old.tag_id
UNION
SELECT Count(*) AS c
FROM tableB_tag
WHERE tag_id = old.tag_id) countTags) = 0;
/* Same trigger for table tableB_tag */
/* And same again for table tableC_tag */
ただし、タグがまだ使用されているかどうかをチェックするか、チェックインせず、タグがまだ使用されtableC_tagてtableB_tagいるtableA_tag場合でもタグを削除できるため、機能しません。tableA_tagまた、トリガーを発生させたのと同じテーブルであるため、確認できません。
だから、どうすればいいですか?