こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

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

投稿日時 - 2010-04-05 15:04:24

QNo.5804277

すぐに回答ほしいです

質問者が選んだベストアンサー

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

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

投稿日時 - 2010-04-07 01:24:30

お礼

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

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

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

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

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

投稿日時 - 2010-04-07 09:28:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-