以下は、私がいくつかの更新を行っているダミーテーブルです。ここでは、「名前」列のみを操作しています。私が必要とするのは、影響を受ける行を挿入することです(例えば)私は "ID" -2のための秒を変更し、私はこの行だけ新しい/更新された値で新しいテーブルに挿入する必要があります必要があります。私はトリガーによってそうしようとしましたが、テーブルの突然変異に関するエラーを吐き出しています。影響を受ける行を新しいテーブルに挿入する方法
ID NAME
================
1 Vaz
2 Dan
3 Steve
データを挿入したいテーブルは、上記のテーブルと同じ構造を持ち、同じデータ型の同じカラムを持っています。
これが他の方法で実行される可能性がある場合や、トリガーに間違ったコードを書いている場合は、お勧めします。ここに目的のために書いたコードがあります:
CREATE OR REPLACE TRIGGER HR.ins_temp
after UPDATE OF name ON HR.TEMP2 FOR EACH ROW
BEGIN
INSERT INTO temp3
(SELECT NAME
FROM temp2
WHERE (:new.NAME<>:old.NAME));
END;
temp2は操作テーブルでtemp3は新しいものです。
は、魔法のように おかげで多くのことを働きました。 多くの列がある場合はどうなりますか?私はまだ挿入時に別々に言及しているでしょう – hashir
@hashir:そうする必要があります、それはSQLの 'insert'文がどのように動作するかです。 –
助けてくれてありがとう! – hashir