Forum: PC-Programmierung mutating table problem in oracle sql


von Taw U. (tawo20)


Lesenswert?

Ich habe einen Trigger implementiert, der die Löschung eines Kontos 
verhindert, wenn eine Zahlung erfolgt, aber ich erhalte den Fehler, dass 
die Tabelle geändert wurde. Im Internet steht, dass es das Problem der 
mutating table ist.

Ich habe es gerade mit dem Compound Trigger versucht, aber ich konnte es 
nicht zum Laufen bringen.
Der code ansich implemntiert aber beim testen kommt dann das Problem mit 
mutating Table.
Es wäre hilfreich wenn mir jemand mal anhand des Beispiels zeigen könnte 
wie es mit dem Compound Trigger funktioniert, oder gibt es noch eine 
andere Lösung dazu ?
Hier der Code
1
CREATE OR REPLACE TRIGGER checkDelete
2
3
BEFORE DELETE ON customerAcc
4
5
Declare
6
7
       price NUMBER;
8
9
       status NUMBER;
10
11
       delete_exception EXCEPTION; 
12
13
BEGIN
14
15
SELECT amount, paid INTO price, status FROM payment NATURAL JOIN tutoring
16
17
 WHERE customer_ID = :OLD.customer_ID;
18
19
IF price != status THEN
20
21
RAISE delete_exception;
22
23
END IF;
24
25
EXCEPTION
26
27
WHEN delete_exception THEN
28
29
DBMS_OUTPUT.PUT_LINE(Can not delete acc!');
30
31
END;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.