Bonjour ,
tout d'abord je vous presente le mld de ma base de données qui gere une agence de voyages
j'utilise postgresql je voudrais gérer certaines contraintes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Station(nomStation, capacité, lieu, région, tarif) Activité(nomStation,libellé, prix) Client(id, nom, prénom, ville, région, solde) Sejour(id, station, début, nbPlaces)
. Le prix d'une activité doit être inférieur au tarif de la station et supérieur à 0
Pour une date de début donnée, le nombre total de places réservées dans une station doit être inférieur à la capacité de la station.
pour l'instant je n'ai testé que la première . jusqu'à maintenant je n'ai géré que des contraintes simples du style que les valeurs d'un champ soient comprises entre les valeurs d'une liste...
pour cette requete j'avais pensé à gérer ca comme:
mais j'ai eu comme erreur comme quoi qu'on ne peut pas avoir de sous requete dans une contrainte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 alter table activite add constraint prix check (prix <(select tarif from station) and prix>0);
donc apres j'ai testé
etant donne que nomstation est une clé etrangere mais ca n'a pas fonctionné j'ai eu comme erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 alter table activite add constraint prix check (prix <station.tarif and prix>0);
et d'autre part j'ai voulu tester avec les triggers mais je n'ai jamais utilisé ca donc je voudrais savoir si cette syntaxe est correcte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 NOTICE: Ajout d'une entrée manquante dans FROM (table «station») ERREUR: La contrainte de vérification pourrait seulement référencer la relation «activite»
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TRIGGER ins_sum BEFORE INSERT ON activite referencing new as prix (when prix < (select tarif from station where station.nomstation=activite.nomstation) for each row);
Partager