2016-05-15 11 views
0

レートを更新する際に割引率に基づいて価格を更新するために、次のトリガを取得しようとしています。エラーテーブル内の同じテーブルでトリガを使用して列を更新しようとしています

create or replace trigger discount_change 
    before update on maintain 
    for each row 
begin 
    if :NEW.discount_rate != :OLD.discount_rate 
    then 
    update maintain m 
    set m.discount_price = :NEW.discount_rate * :OLD.price 
    where m.m_id = :NEW.m_id; 
    end if; 
end; 

これは演習であるため、これらは同じテーブル(悲しげに)にあり、私はこれを行うにしようとしたとき、私は一貫して、エラーを取得しています:

table %s.%s is mutating, trigger/function may not see it

私はこれらのフォーラムをコーミングしてきました答えを探していて、私が研究している限り、私はテーブルから何も選択していないので、このエラーを投げてはいけません。私はここで間違って何をしていますか?

答えて

0

そのupdation

+0

のためのトリガーを定義する必要がないので、私は計算列として列discount_priceを作成することをお勧め私はことがしたいが、これは我々がトリガを実践されることを意図されている運動です。私はなぜエラーの背後にある理由がわかっていますが、私はまだそれを回避する方法を見つけることができません。 – Syzorr

関連する問題