Hallo alle zusammen,
ich sitze gerade an einer Datenbankaufgabe und komme seit vielen Stunden einfach nicht vorran. Es geht eigentlich nur um einen kleinen Trigger, der die Tabelle ORD aktualisieren soll, wenn ein ITEM gelöscht, hinzugefügt oder geändert wird. Und zwar enthalten alle ITEMS das Feld ITEMTOT, was den gesamtpreis der ITEMs beinhaltet (menge*preis). der Trigger soll alle Itemtotalpreise der gleichen ORDID zusammenzählen, damit der Preis der Order insgesamt immer korrekt ist.
Hier die Tabellen
ITEM----------------------------------
ORDID number (4) PK, FK
ITEMID number (4) PK
PRODID number (6)
ACTUALPRICE number (8,2)
QTY number (8)
ITEMTOT number (8,2)
ORD-----------------------------------
ORDID number(4) PK
ORDERDATE date
COMMPLAN varchar (1)
CUSTID number (5)
SHIPDATE date
TOTAL number (2)
Mein Trigger, der mutating table exception auslöst:
Ich weiss, warum der "mutating table" Fehler auftritt, aber ich habe keinen Ansatz wie ich diesen beheben kann. Ich habe schon ein wenig im Internet gesucht und viel von Packages, Hilfstabellen und Hilfstriggern gelesen. Leider weiss ich trotzdem nicht, wie ich meinen Trigger umschreiben kann, so das er funktioniert
Ich bin für jede Hilfe sehr dankbar,
MFG Mediax
ich sitze gerade an einer Datenbankaufgabe und komme seit vielen Stunden einfach nicht vorran. Es geht eigentlich nur um einen kleinen Trigger, der die Tabelle ORD aktualisieren soll, wenn ein ITEM gelöscht, hinzugefügt oder geändert wird. Und zwar enthalten alle ITEMS das Feld ITEMTOT, was den gesamtpreis der ITEMs beinhaltet (menge*preis). der Trigger soll alle Itemtotalpreise der gleichen ORDID zusammenzählen, damit der Preis der Order insgesamt immer korrekt ist.
Hier die Tabellen
ITEM----------------------------------
ORDID number (4) PK, FK
ITEMID number (4) PK
PRODID number (6)
ACTUALPRICE number (8,2)
QTY number (8)
ITEMTOT number (8,2)
ORD-----------------------------------
ORDID number(4) PK
ORDERDATE date
COMMPLAN varchar (1)
CUSTID number (5)
SHIPDATE date
TOTAL number (2)
Mein Trigger, der mutating table exception auslöst:
PHP:
SHOW ERRORS;
CREATE OR REPLACE TRIGGER orderTotal
AFTER UPDATE OR INSERT OR DELETE ON ITEM
FOR EACH ROW
DECLARE
ORDERTOTAL NUMBER;
BEGIN
IF UPDATING THEN
select sum(itemtot) INTO ORDERTOTAL from item where ordid=:NEW.ordid;
UPDATE ord
SET TOTAL = ORDERTOTAL WHERE ordid=:NEW.ordid;
END IF;
IF DELETING THEN
select sum(itemtot) INTO ORDERTOTAL from item where ordid=:OLD.ordid;
UPDATE ord
SET TOTAL = ORDERTOTAL WHERE ordid=:OLD.ordid;
END IF;
IF INSERTING THEN
select sum(itemtot) INTO ORDERTOTAL from item where ordid=:NEW.ordid;
UPDATE ord
SET TOTAL = ORDERTOTAL WHERE ordid=:NEW.ordid;
END IF;
END;
Ich weiss, warum der "mutating table" Fehler auftritt, aber ich habe keinen Ansatz wie ich diesen beheben kann. Ich habe schon ein wenig im Internet gesucht und viel von Packages, Hilfstabellen und Hilfstriggern gelesen. Leider weiss ich trotzdem nicht, wie ich meinen Trigger umschreiben kann, so das er funktioniert
Ich bin für jede Hilfe sehr dankbar,
MFG Mediax