
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を使ってログを残せるようにするためこのトリガーを作ろうとしています。
この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか
がよくわかりません。どうしても解らないので教えていただければ幸いです。
何卒よろしくお願いします。
No.1ベストアンサー
- 回答日時:
トリガーでログ出力機能を用意しても、本体でエラーが発生すると、
ログ出力内容までロールバックされますが、それでいいのですか?
(自律トランザクション書けば、ログをロールバックしないように出来ますが・・)
ご質問のトリガーでのINSERT文ですが・・
INSERT文の構文自体は、普通のINSERT文です。
ただ、トリガーを仕込んだテーブルの新旧の値は、:new.xxxや、:old.xxxのような表現で扱えるので、
insert into table2 (col1,col2) values(:new.colA,:new.colB);
のような書き方になります。
回答ありがとうございます。
おかげで悩みが解決しました。
エラーが発生した場合はログ出力はロールバックされたほうがいいので
今回は自律トランザクションを使わないことにします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MERGE文について
-
SQL MARGE 使用方法 ORACLE
-
単一グループのグループ関数で...
-
SQL*Loader Append
-
データ
-
引数によってwhere句を切り替え...
-
【PL/SQL】FROM区に変数を使う方法
-
group byの並び順を変えるだけ...
-
トランザクションログを出力せ...
-
「数字で始まらない」ものを抽...
-
Oracleですがsqlで質問です。 ...
-
SELECT FOR UPDATE で該当レコ...
-
updateで複数行更新したい
-
AccessのSQL文で1件のみヒット...
-
大量レコードをTRUNCATEせずに...
-
一部のレコードをバックアップ...
-
oracle DB内のデータを増幅す...
-
PL/SQL内の共通関数の引数にフ...
-
where句中のtrim関数について
-
440 OIP エラーについて(ORADC)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
データ
-
SQL*Loader Append
-
AccessのSQL文で1件のみヒット...
-
引数によってwhere句を切り替え...
-
トランザクションログを出力せ...
-
updateで複数行更新したい
-
アクセスのレポートでレコード...
-
group byの並び順を変えるだけ...
-
「数字で始まらない」ものを抽...
-
osqleditについて
-
SQLで条件にヒットしたレコード...
-
デフォルトでデータが表示され...
-
BLOB型項目をSQLの検索条件に指...
-
1レコード全てを改行なしで表...
-
トリガからプロシージャのコー...
-
PL/SQLでフェッチでNULLの項目...
おすすめ情報