Bonjour ,

tout d'abord je vous presente le mld de ma base de données qui gere une agence de voyages
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
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)
j'utilise postgresql je voudrais gérer certaines contraintes:

  • 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:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
alter table activite add constraint prix check (prix <(select tarif from station) and prix>0);
mais j'ai eu comme erreur comme quoi qu'on ne peut pas avoir de sous requete dans une contrainte.
donc apres j'ai testé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
alter table activite add constraint prix check (prix <station.tarif and prix>0);
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
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»
. pourriez vous m'aider s'il vous plait

[Modération : Mise en page revue par LeoAnderson]