Mutating error on after insert-trigger
Den code unten gibt mutierend Fehler.
Kann any1 pls um Hilfe bei der Lösung dieses.
CREATE OR REPLACE TRIGGER aso_quote_cuhk_trigger
BEFORE INSERT
ON aso.aso_quote_headers_all
FOR EACH ROW
BEGIN
UPDATE aso.aso_quote_headers_all
SET quote_expiration_date=sysdate+90
where quote_header_id=:new.quote_header_id;
END;
/
- Brauchen Sie wirklich einen "trigger" hier ? look at dba-oracle.com/t_avoiding_mutating_table_error.htm
Du musst angemeldet sein, um einen Kommentar abzugeben.
In oracle gibt es zwei Ebenen von Triggern: Zeilen-Ebene und Tabelle-Ebene.
Row level Trigger werden ausgeführt
for each row
. Tabelle Pegel-Trigger ausgeführt pro Anweisung, auch wenn ein statement mehr verändert, dann eine Zeile.In a row-level-trigger, können nicht Sie/aktualisieren Sie die Tabelle selbst hat der Auslöser: Sie erhalten eine mutierend Fehler.
In diesem Fall gibt es keine Notwendigkeit für eine UPDATE-Anweisung. Nur versuchen Sie dies:
BEARBEITEN Rajesh erwähnt, ist es möglich, dass vor dem einfügen einer neuen Zeile, OP aktualisieren will alle anderen Datensätze in der
aso_quote_headers_all
Tabelle.Gut, das ist machbar, aber es ist ein wenig schwierig. Um dies richtig tun, werden Sie brauchen,
session_variable
.session_variable
.session_variable
, die Prozess-ID und entfernen Sie Sie dann aus dersession_variable
. Dieser trigger ausführen könnte notwendig wählt/updates auf der aso_quote_headers_all. Nach einem neu eingefügten ID verarbeitet wird, wird dieser trigger sollte sicherzustellen, wird es entfernt von dersession_variable
.Merke ich, Sie müssen Ihr Problem gelöst, indem nun. Jedoch bin ich das hinzufügen dieser Antwort unten, um zu helfen jemand mit ähnlichen problem wie du und ich vor.
Habe ich vor kurzem festgestellt mutierend Tabelle (ORA-04091: Tabelle XXXX mutiert, trigger/Funktion sieht es nicht) Problem und nach der Suche rund um realisierte die Compound Trigger feature in 11g. Wenn Sie auf 11g folgenden compound trigger hätte Ihr Problem gelöst.
Ein Wort darüber, wie es funktioniert. Diese compound-trigger 2 Ereignisse :
Nützliche link wenn Sie mehr Lesen wollen über die Verbindung Löst.