次のテーブルがあります: 返信とメッセージ。Facebook の動作を真似したいと思います。メッセージが削除されると、関連するすべての返信も削除されます。私のテーブルは次のようになります。
REPLIES
messageId replyId
6b61d107-dff3-4374-a3a2-75ac7478a2f2 865c873d-0210-482a-b8bd-371c4f07f0cf
MESSAGES
id body
865c873d-0210-482a-b8bd-371c4f07f0cf this is the reply
6b61d107-dff3-4374-a3a2-75ac7478a2f2 this is the message
メッセージが削除されたときに返信の関連行を削除する最初のトリガーを作成しました。返信の行が削除されるたびに関連するメッセージを削除する別のトリガーを作成したいと思います。現在、返信は意味をなさない独自のメッセージになっています。2 番目のトリガーは次のとおりです。
CREATE TRIGGER TRG_DEL_MESSAGES
ON Replies
FOR DELETE
AS
DELETE FROM Messages WHERE id = (SELECT replyId FROM DELETED)
何かを削除しようとすると、次のエラーが発生します。
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).
どうやら無限ループが発生しているようです。これは、DELETED テーブルが最初のトリガー (2 番目のトリガー) からのデータで満たされているためだと思います。しかし、本当にわからないので、助けていただければ幸いです。ありがとう!