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.
Hier zuerst der Code wie er vorher war
und hier der Code mit dem Compound Trigger ich habe versucht den Compound Trigger zu benutzen habe es aber nicht ganz verstanden und brauche Hilfe
Es wäre cool wenn mir jemand mal anhand des Beispiels zeigen könnte wie es funktioniert
Ich habe es gerade mit dem Compound Trigger versucht, aber ich konnte es nicht zum Laufen bringen.
Hier zuerst der Code wie er vorher war
Code:
CREATE OR REPLACE TRIGGER checkDelete
BEFORE DELETE ON customerAcc
Declare
price NUMBER;
status NUMBER;
delete_exception EXCEPTION;
BEGIN
SELECT amount, paid INTO price, status FROM payment NATURAL JOIN tutoring
WHERE customer_ID = :OLD.customer_ID;
IF price != status THEN
RAISE delete_exception;
END IF;
EXCEPTION
WHEN delete_exception THEN
DBMS_OUTPUT.PUT_LINE(Can not delete acc!');
END;
und hier der Code mit dem Compound Trigger ich habe versucht den Compound Trigger zu benutzen habe es aber nicht ganz verstanden und brauche Hilfe
Code:
CREATE OR REPLACE TRIGGER checkDelete
BEFORE DELETE ON customerAcc
Compound Trigger
TYPE r_check_delete is RECORD
(
price NUMBER;
status NUMBER;
delete_exception EXCEPTION;
);
BEFORE EACH ROW IS
BEGIN
SELECT amount, paid INTO price, status FROM payment NATURAL JOIN tutoring
WHERE customer_ID = :OLD.customer_ID;
IF price != status THEN
RAISE delete_exception;
END IF;
EXCEPTION
WHEN delete_exception THEN
DBMS_OUTPUT.PUT_LINE(Can not delete acc!');
END BEFORE EACH ROW;
END;
Es wäre cool wenn mir jemand mal anhand des Beispiels zeigen könnte wie es funktioniert