トリガーの起動条件で悩んでいます。
超初心者です。
うまく説明できないかも知れませんが助けて下さい。
うまく動作しない処理は、
[A_TBL]が更新時に履歴あり・なしにそれぞれトリガーを用意しているのですが、
履歴なしの場合は[A_TBL]がUPDATEされるだけなので、
『[A_TBL]がUPDATEされたタイミングで[B_TBL]もUPDATEする』
という起動条件にしています。
履歴ありの場合は[A_TBL]のデータをUPDATEで無効化(FLGを立てます)し、
その後、更新データをINSERTで登録しようと思っています。
そのためトリガーの起動条件を、
『[A_TBL]がINSERTされたタイミングで[B_TBL]のデータをUPDATEする』
としていますが、
[A_TBL]に新規登録時のトリガーの起動条件が、
『[A_TBL]にINSERTされたタイミングで[B_TBL]にもINSERTする』
としているので、
[A_TBL]にINSERTされると両方のトリガーが起動してしまい、
怒られました。
自分の作ったトリガーを書いておくので
どのようにしたらよいのか教えていただけませんでしょうか?
トリガーの書き方におかしな点があったらご指摘もお願い致します。
よろしくお願いしますm(_ _)m
新規登録のトリガー
CREATE OR REPLACE TRIGGER INS_01
AFTER INSERT
ON A_TBL
FOR EACH ROW
BEGIN
INSERT INTO
B_TBL(
ID,
姓,
名,
住所,
本籍,
電話番号,
郵便番号
)VALUES(
:NEW.ID,
:NEW.姓,
:NEW.名,
:NEW.住所,
:NEW.本籍,
:NEW.電話番号,
:NEW.郵便番号
);
END;
/
更新のトリガー
CREATE OR REPLACE TRIGGER UP_01
AFTER INSERT
ON A_TBL
FOR EACH ROW
BEGIN
UPDATE
B_TBL
SET
姓 = :NEW.姓,
名 = :NEW.名,
住所 = :NEW.住所,
本籍 = :NEW.本籍,
電話番号 = :NEW.電話番号,
郵便番号 = :NEW.郵便番号
WHERE
ID = :NEW.ID
;
END;
/