2017-12-29 15 views
-1

Ich möchte einen Update-Trigger für eine Tabelle erstellen. Der Trigger wurde erstellt, aber wenn ich die Spalte finish aktualisiere, heißt es Mutationstabelle.Oracle SQL muting Tabelle Trigger vor Update

Dies ist mein Code

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; 

Dieser Trigger mir Fehler ‚Mutating Table‘ gibt und bisher habe ich es nicht gelungen, es zu beheben. Irgendein Vorschlag ? Danke

+0

Es gibt buchstäblich Dutzende von Antworten auf Stackoverflow über Oracle mit der mutierenden Tabelle Ausnahme auslöst scheitern. [Warum nicht einige von ihnen lesen ???] (https://stackoverflow.com/search?q=oracle+mutting+table+trigger) – APC

Antwort

2

Zunächst einmal sollten Sie das überhaupt nicht tun. Es macht keinen Sinn, Werte zu speichern, die bei Bedarf einfach berechnet werden können.

Wie Ihre Frage: Nein UPDATE:

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

sehr sehr danke @Littlefoot, es funktioniert, ich habe den gleichen Code aber versucht Ich benutze nur = nicht: =, ich muss vorsichtiger sein – Hilfit19