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
私はこれらのフォーラムをコーミングしてきました答えを探していて、私が研究している限り、私はテーブルから何も選択していないので、このエラーを投げてはいけません。私はここで間違って何をしていますか?
のためのトリガーを定義する必要がないので、私は計算列として列discount_priceを作成することをお勧め私はことがしたいが、これは我々がトリガを実践されることを意図されている運動です。私はなぜエラーの背後にある理由がわかっていますが、私はまだそれを回避する方法を見つけることができません。 – Syzorr