新しく質問する

ORACLEのトリガーについて勉強しているのですが現在詰っています。

役に立った:0件
  • 質問者:rizaruto
  • 投稿日時:2010/04/05 15:04
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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

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

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

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

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.1ベストアンサー20pt

トリガーでログ出力機能を用意しても、本体でエラーが発生すると、
ログ出力内容までロールバックされますが、それでいいのですか?
(自律トランザクション書けば、ログをロールバックしないように出来ますが・・)

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

通報する

この回答へのお礼

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

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

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

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

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

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter