dポイントプレゼントキャンペーン実施中!

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を使ってログを残せるようにするためこのトリガーを作ろうとしています。

この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか

がよくわかりません。どうしても解らないので教えていただければ幸いです。

何卒よろしくお願いします。

A 回答 (1件)

トリガーでログ出力機能を用意しても、本体でエラーが発生すると、


ログ出力内容までロールバックされますが、それでいいのですか?
(自律トランザクション書けば、ログをロールバックしないように出来ますが・・)

ご質問のトリガーでのINSERT文ですが・・
INSERT文の構文自体は、普通のINSERT文です。
ただ、トリガーを仕込んだテーブルの新旧の値は、:new.xxxや、:old.xxxのような表現で扱えるので、
insert into table2 (col1,col2) values(:new.colA,:new.colB);
のような書き方になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

おかげで悩みが解決しました。

エラーが発生した場合はログ出力はロールバックされたほうがいいので

今回は自律トランザクションを使わないことにします。

ありがとうございました。

お礼日時:2010/04/07 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!