Flagi w pakietach

0

Chciałbym zrobić wyzwalacz, który po modyfikacji kolumny "ilosc_krwi" zmienia wartosc kolumny "data_wydania" gdzie pseudo jest nullem (czyli krew nie została jeszcze wydana) i donacja jest inna od donacji, która właśnie została zmienionia.(czyli id_donacji<>id_donacji edytowanej).

Mój problem polega na tym, że, po wywołaniu wyzwalacza wyskakuje mi błąd o tabelach mutujących.
Wiem jak to ominąć, należy zrobić pakiet oraz dwa wyzwalacze, zrobilem je w ten sposób:

 CREATE OR REPLACE PACKAGE pakiet_rezerwacja
AS
donacja donacje1.id_donacji%TYPE;


CREATE OR REPLACE TRIGGER rezerwacja_part1
BEFORE UPDATE ON donacje1
FOR EACH ROW
WHEN (OLD.ilosc_krwi <> NEW.ilosc_krwi)
DECLARE
donacja donacje1.id_donacji%TYPE;
BEGIN
SELECT id_donacji INTO donacja FROM donacje1 WHERE :OLD.ilosc_krwi <> :NEW.ilosc_krwi;

END rezerwacja_part1;
/

CREATE OR REPLACE TRIGGER rezerwacja_part2
AFTER UPDATE ON donacje1
DECLARE
ident_donacji    donacje1.id_donacji%TYPE;
rezerwacja       donacje1.data_wydania%TYPE;
BEGIN
ident_donacji:=pakiet_rezerwacja.donacja;
rezerwacja:=SYSDATE+10;
UPDATE donacje1 SET data_wydania = rezerwacja WHERE pseudo IS NULL AND id_donacji <> ident_donacji; 

END rezerwacja_part2;
END pakiet_rezerwacja;
/

Problem może polegać na tym że należy w drugim wyzwalaczu zmienić "flagę", jednak nie wiem jak rozwiązać problem z flagami, gdyż nie wiem jak się ich używa.
Co trzeba zrobić by podczas wykonywania drugiego wyzwalacza, nie wykonywał się już pierwszy?

0

Nikt nie wie, co zrobić by to działało?

1 użytkowników online, w tym zalogowanych: 0, gości: 1