Problème exercices triggers

Signaler
Messages postés
111
Date d'inscription
lundi 5 octobre 2015
Statut
Membre
Dernière intervention
31 mai 2020
-
Messages postés
11717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 août 2020
-
Bonjour,

Je suis débutant sur les triggers et j'ai trouvé cette exercice :
- Afin d’éviter qu’il puisse y avoir des erreurs de saisie, on souhaite qu’une réservation ne puisse pas être concernée par un séjour dont la date de début est antérieure à la date de réservation.
Travail à réaliser
Coder le déclencheur correspondant

CREATE FUNCTION reglementSejour(idResa integer)
RETURNS numeric(l0,2)
AS $codeFonction$
DECLARE
numCli integer ;
montantDejaPaye numeric(l0,2) ;
BEGIN
SELECT idClient INTO numCli
FROM reservation
WHERE idReservation = idResa ;
SELECT SUM(montantReglement) INTO montantDejaPaye
FROM reglement
WHERE idReservation = idResa ;
IF (montantDejaPaye IS NULL ) THEN
montantDejaPaye = 0 ;
END IF ;
IF ((SELECT COUNT(*) FROM pro WHERE idClient = numCli)=l) THEN
RETURN(SELECT SUM(prix * duree) - montantDejaPaye
FROM contenir
JOIN chambre USING (numeroChambre)
JOIN concerner USING (numeroChambre,idReservation)
WHERE dateDebut >= CURRENT_DATE
AND idReservation = idResa
) ;
ELSE
RETURN (SELECT SUM(prix * duree)
FROM contenir
JOIN chambre USING (numeroChambre)
JOIN concerner USING (numeroChambre,idReservation)
WHERE idReservation = idResa
) ;
END IF ;
END ;
$codeFonction$ LANGUAGE PLPGSQL ;


J'ai codé ceci mais je sais que c'est faux c'est très peu et j'ai du mal a comprendre l'utilité du trigger
ce que je voudrai c'est la réponse et comprendre également l'utilité du déclencheur
 CREATE TRIGGER reservation
BEFORE idResa
IF (dateDebut < idResa)
;


Merci d'avance pour votre répondre