[ORACLE] Trigger dla dwóch tabel

0

Witam

W tabeli "zwroty" jest pole "datazwrotu"
W tabeli "wypozyczenia" jest pole "datawypozyczenia"

Chcę, żeby było sprawdzane, czy datazwrotu <= datawypozyczenia

Próbowałem w następujący sposób, ale nie działa:

CREATE OR REPLACE TRIGGER sprawdzDate
BEFORE INSERT OR UPDATE ON zwroty
BEGIN 
IF :wypozyczenia.datawypozyczenia > :datazwrotu THEN 
raise_application_error(-20000,'Data zwrotu musi być większa niż data wypożyczenia'); 
END IF; 
END;

Proszę o pomoc

0

A zobacz coś takiego:

CREATE OR REPLACE TRIGGER sprawdzDate
BEFORE INSERT OR UPDATE ON zwroty
DECLARE
data date;
BEGIN 
SELECT datawyporzyczenia 
INTO data
FROM wyporzyczenia
WHERE id_pozycji = :NEW.id_pozycji;
IF data > :NEW.datazwrotu THEN 
raise_application_error(-20000,'Data zwrotu musi być większa niż data wypożyczenia'); 
END IF; 
END;
0

Nie działa, komunikat jest, że:
http://szablony.freeware.info.pl/skrypty.html
ORA-04082: NEW or OLD references not allowed in table level triggers

0

A po grzyba robić to triggerem?! [glowa]

Poczytaj o CHECK constraints. O ile wiem, obsługuje podzapytania.

0
gg1985 napisał(a)

Nie działa, komunikat jest, że:

ORA-04082: NEW or OLD references not allowed in table level triggers

Identyfikatory :old i :new można stosować tylko w wyzwalaczach na poziomie wierszy. Klauzula FOR EACH ROW.

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