[resolu]CONTRAINTE DE DOMAINE
Bonjour ,
tout d'abord je vous presente le mld de ma base de données qui gere une agence de voyages
Code:
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) |
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:
1 2
|
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:
1 2
|
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:
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» |
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:
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);
merci d'avance