2017-12-29 31 views
-1

テーブルの更新トリガーを作成したいとします。トリガが作成されましたが、カラムfinishを更新すると、テーブルが変更されています。更新前のOracle SQL変換テーブルのトリガー

これは私のコード

CREATE OR REPLACE TRIGGER SET_COST BEFORE UPDATE OF finish ON PAY 
    FOR EACH ROW 

    BEGIN 

    UPDATE PAY 
    SET PAY.COST = (finish-start) * 20000 
    WHERE PAY.ID=:new.ID; 

    END; 

あるこのトリガーは私に「変異テーブル」エラーを与え、これまでのところ、私はそれを修正することができませんでした。なにか提案を ?ありがとう

+0

は、文字通り、Oracleが変更表例外で失敗トリガに関するStackOverflowの上の回答の数十があります。 [なぜそれらのいくつかを読んでみてください](https://stackoverflow.com/search?q=oracle+mutating+table+trigger) – APC

答えて

2

まず、あなたは全くそれをするべきではありません。必要な時にいつでも簡単に計算できる値を保存することはありません。あなたの質問の

として:いいえUPDATE:

begin 
    :new.cost := (:new.finish - :new.start) * 20000; 
end; 
+0

非常に非常に感謝@Littlefoot、その働き、私は同じコードを試したが、私はちょうど= =を使用しないでください:=、私はもっと注意する必要があります – Hilfit19