1つのtag
テーブルと3つtableA
のテーブルがありtableB
、 3つのテーブルとtableC
一緒にタグ付けでき、それらを結合するテーブルがあります。tableA_tag
tableB_tag
tableC_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
また、トリガーを発生させたのと同じテーブルであるため、確認できません。
だから、どうすればいいですか?