1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Create or Replace trigger triggerSubSetDirecteurLab
after insert or update on Laboratoire
FOR EACH ROW
DECLARE
trouve INTEGER := 0;
PRAGMA AUTONOMOUS_TRANSACTION;
invalideRefDirecteur Exception;
BEGIN
if inserting then
for refMembreV in (select m.refMembre from laboratoire l, TABLE(l.LesMembres) m where l.idLab = :new.idLab) loop
if (:new.RefDirecteur = refMembreV) then
trouve := 1;
end if;
end loop;
end if;
if trouve = 0 then RAISE invalideRefDirecteur;
end if;
COMMIT;
EXCEPTION
WHEN invalideRefDirecteur THEN
ROLLBACK;
raise_application_error( -20006, 'Violation de la contrainte {subset} le membre directeur doit être un membre du laboratoire' );
END; |
Partager