mutating table problem in oracle sql

OP #7081807
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren