0
owner_idがnullの場合、owner_notif_staへの更新または挿入後にowner_notif_staをnullに設定するトリガーを起動しようとしています。 owner_idとowner_notif_staは同じテーブルからのものです。Derby ERROR 54038:ネストされたトリガーの最大深度を超えました
トリガー:
CREATE TRIGGER check_owner
AFTER UPDATE OF owner_notif_sta ON risk
REFERENCING OLD AS EXISTING
FOR EACH ROW MODE DB2SQL
UPDATE risk SET owner_notif_sta = NULL
WHERE owner_id IS NULL;
I火しようとした更新:
UPDATE RISK SET owner_notif_sta = 'helloo' WHERE risk_id = 'ICT123';
と
(iは更新を焼成したとき取り込まれていない)、私は、次の受信ヌルたOWNER_IDエラー: エラー54038:ネストされたトリガーの最大深度を超えました。すでにヌルとしてowner_notif_sta
を持つ行を除外するために、わずかにUPDATE
声明の変更について事前
はあなたに感謝。私はそれを試みましたが、DerbyがIf else文をサポートしていないと思います。 –
私は私の答えを編集しました。私はそれがはるかに簡単だと思うし、それは動作するはずです。トリガー内の 'UPDATE'ステートメントの最後に' AND owner_notif_sta IS NOT NULL'を追加してください。再帰的なトリガー呼び出しを防止する必要があります。 – sstan
これは行トリガーであるため、update文にキーまたはID列に 'where'句がないことに驚いています(例:' id = existing.id) '。私はアップデートが1行に限定されると期待していますが、私はそれを見ていません。それはあなたが見る必要のあるものかもしれません。 – sstan