アプリ版:「スタンプのみでお礼する」機能のリリースについて

PL/SQLでREPRACE INTO構文と同様の処理を作成

別のテーブルにレコードを投入する処理を実行するトリガを作成したのですが、
プライマリ・キーが重複するレコードの投入時に、一意制約でエラーになってしまいます。
トリガの作為としましては、プライマリキーが重複する際には上書きさせたいのですが、この場合、PLSQLではどのようなコマンドがあるのでしょうか?
(mySQLのREPLACE INTO と同様の処理を行うコマンドを想定しています)


↓下記のINSERT INO の箇所をREPLACE INTOと同様の処理を行うコマンドにしたいと思っております

CREATE OR REPLACE TRIGGER TRI_TEST
after update of TRI_NAME ,TRI_CALLED on cp_MV_TABLE
FOR EACH ROW
begin
if (:old.TRI_NAME != :new.TRI_NAME or :old.TRI_CALLED != :new.TRI_CALLED ) THEN
INSERT INTO TR_RUS_TABLE
(
TRI_NO ,
TRI_DATE ,
TRI_NAME ,
TRI_CALLED
)
values
(
:new.TRI_NO ,
:new.TRI_DATE ,
:new.TRI_NAME ,
:new.TRI_CALLED
);
end if;
end;
/

A 回答 (2件)

今回に限ったことではないのですが、質問は1カ所だけにしておいた方がいいと思いますけど。


回答する人は別の掲示板で既に書かれていることを知らずに書いてしまうこともありますよね。
そうするとお互いに時間の無駄になるのではないでしょうか。

ですので、merge文についてはあちらに書かせてもらいますね。
    • good
    • 0
この回答へのお礼

mergeはトリガでは使用できないとのことなので、
EXCEPTIONで対応しました。
ありがとうございました

お礼日時:2010/09/24 14:32

こちらを参考にしてください。



http://www.oracle.co.jp/forum/thread.jspa?thread …
    • good
    • 0
この回答へのお礼

mergeがトリガでは使用できないようなので、
他に方法はないでしょうか

お礼日時:2010/09/24 13:51

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