ORACLEのトリガーについて勉強しているのですが現在詰っています。
ORACLEのトリガーについて勉強しているのですが現在詰っています。
トリガーの内容ですが、table1のレコードがUPDATEかINSERTかDELETEが
実行された時にtable2にそのレコードすべてをINSERTしたいのですが
CREATE OR REPLACE TRIGGER test_trg
After INSERT or UPDATE or DELETE on table1 for each row
BEGIN
if inserting then
insert into (?);
elsif updating then
insert into (?);
else
insert into (?);
end if;
END;
tableを使ってログを残せるようにするためこのトリガーを作ろうとしています。
この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか
がよくわかりません。どうしても解らないので教えていただければ幸いです。
何卒よろしくお願いします。
回答(1件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.1ベストアンサー20pt
トリガーでログ出力機能を用意しても、本体でエラーが発生すると、
ログ出力内容までロールバックされますが、それでいいのですか?
(自律トランザクション書けば、ログをロールバックしないように出来ますが・・)
ご質問のトリガーでのINSERT文ですが・・
INSERT文の構文自体は、普通のINSERT文です。
ただ、トリガーを仕込んだテーブルの新旧の値は、:new.xxxや、:old.xxxのような表現で扱えるので、
insert into table2 (col1,col2) values(:new.colA,:new.colB);
のような書き方になります。
この回答へのお礼
回答ありがとうございます。
おかげで悩みが解決しました。
エラーが発生した場合はログ出力はロールバックされたほうがいいので
今回は自律トランザクションを使わないことにします。
ありがとうございました。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











