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 32 33 34 35
|
CRATE TRIGGER t_avert_reservation
AFTER UPDATE OF DATERET
ON EMPRUNT
FOR EACH ROW
nomA ABONNE.NOM%TYPE
prenomA ABONNE.PRENOM%TYPE
adresseA ABONNE.ADRESSE%TYPE
titreR LIVRE.TITRE%TYPE
reservation RESERV%ROWTYPE ; -- Je ne comprends pas la difference entre %TYPE et %ROWTYPE :oops:
BEGIN
SELECT * INTO reservation
FROM (SELECT * FROM RESERV WHERE Contact <> 'OUI' AND IdL IN (SELECT IdL FROM EXEMPLAIRE WHERE CodBar = :NEW.CodBar) ORDER BY DateR)) ---- je comprends pas le FROM (.......(...)) trop de truc imbriqué c finit xD
WHERE ROWNUM = 1 ; --- Que fait ROWNUM Exactement ? xD
SELECT Nom, Prenom, Adresse INTO NomA, PrenomA, AdresseA
FROM ABONNE WHERE IdA = reservation.IdA ;
SELECT Titre INTO TitreR
FROM LIVRE WHERE IdL = reservation.IdL ;
Avertir(NomA, PrenomA, AdresseA, TitreR) ;
UPDATE RESERV SET Contact = 'OUI'
WHERE IdA = reservation.IdA AND IdL = reservation.IdL
AND DateR = reservation.DateR ;
EXECEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Pas de réservation pour ce livre') ; -- Quel est la Difference entre DBMS_OUTPUT.PUT_LINE et RAISE_APPLICATION_ERROR ?
END ; |
Partager