Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------------------
- -- Q2-B : Contrôler l'inscription d'un adhérent comme membre d'équipage
- -- trigger t_InscriptionEqu
- --------------------------------------------------------------------------------
- CREATE OR REPLACE FUNCTION f_InscriptionEqu() RETURNS TRIGGER AS $$
- BEGIN
- IF EXISTS (SELECT numact FROM activite WHERE datedebut <= CURRENT_DATE AND numact = NEW.numact) THEN
- RAISE NOTICE '(t_InscriptionEqu) L''activité % est en cours ou déjà terminée. La requete est annulée !', NEW.numact;
- RETURN NULL;
- ELSIF NOT membredispo(NEW.numadh, (SELECT datedebut FROM activite WHERE numact = NEW.numact), (SELECT datefin FROM activite WHERE numact = NEW.numact)) THEN
- RAISE NOTICE '(t_InscriptionEqu) % n''est pas disponible pour l''activité %. La requete est annulée !', (SELECT nom FROM adherent WHERE numadh = NEW.numadh), NEW.numact;
- RETURN NULL;
- ELSIF (SELECT COUNT(numadh)+1 FROM equipage WHERE numbat = NEW.numbat AND numact = NEW.numact) = (SELECT nbplaces FROM bateau WHERE numbat = NEW.numbat) THEN
- RAISE NOTICE '(t_InscriptionEqu) Le Bateau n°% est complet. La requete est annulée !', NEW.numbat;
- RETURN NULL;
- ELSE RETURN NEW;
- END IF;
- END; $$ LANGUAGE 'plpgsql';
- CREATE TRIGGER t_InscriptionEqu
- BEFORE
- INSERT
- ON Equipage
- FOR EACH ROW
- EXECUTE PROCEDURE f_InscriptionEqu();
- --------------------------------------------------------------------------------
- -- Q3-B : Contrôler l'inscription d'un adhérent comme chef de bord
- -- trigger t_InscriptionCdb
- --------------------------------------------------------------------------------
- CREATE OR REPLACE FUNCTION f_InscriptionCdb() RETURNS TRIGGER AS $$
- BEGIN
- IF EXISTS (SELECT numact FROM activite WHERE datedebut <= CURRENT_DATE AND numact = NEW.numact) THEN
- RAISE NOTICE '(t_InscriptionCdb) L''activité % est en cours ou déjà terminée. La requete est annulée !', NEW.numact;
- RETURN NULL;
- ELSIF NOT membredispo(NEW.numadh, (SELECT datedebut FROM activite WHERE numact = NEW.numact), (SELECT datefin FROM activite WHERE numact = NEW.numact)) THEN
- RAISE NOTICE '(t_InscriptionCdb) % n''est pas disponible pour l''activité %. La requete est annulée !', (SELECT nom FROM adherent WHERE numadh = NEW.numadh), NEW.numact;
- RETURN NULL;
- ELSIF (SELECT skipper FROM adherent WHERE numadh = NEW.numadh) = 'non' THEN
- RAISE NOTICE '(t_InscriptionCdb) Le membre saisie n''est pas skipper. La requete est annulée !';
- RETURN NULL;
- ELSIF NOT bateaudispo(NEW.numbat, (SELECT datedebut FROM activite WHERE numact = NEW.numact), (SELECT datefin FROM activite WHERE numact = NEW.numact)) THEN
- RAISE NOTICE '(t_InscriptionCdb) Le Bateau n°% est complet. La requete est annulée !', NEW.numbat;
- RETURN NULL;
- ELSE RETURN NEW;
- END IF;
- END; $$ LANGUAGE 'plpgsql';
- CREATE TRIGGER t_InscriptionCdb
- BEFORE
- INSERT
- ON chefdebord
- FOR EACH ROW
- EXECUTE PROCEDURE f_InscriptionCdb();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement