[resolu]Check sur une colonne de table "en cours"
Voilà, je crée une table dans laquelle je fais un check sur une colonne...
Table Emprunts :
date_emprunt
agent
cd
date_retour
en fait je fais un check pour vérifier que date_retour est supérieure à date_emprunt.
Le message d'erreur est :
La contrainte de colonne CHECK pour la colonne 'Date_retour' fait référence à une autre colonne, table 'Emprunts'.
Voilà comment je fais ma création de table :
CREATE TABLE Emprunts (
Date_emprunt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Num_cd INTEGER CONSTRAINT fkEmprunts1 REFERENCES Cd(Num_cd),
Num_agt INTEGER CONSTRAINT fkEmprunts2 REFERENCES Agent (Num_agt),
Date_retour TIMESTAMP CONSTRAINT ckDateEmprunt CHECK( Date_emprunt < Date_retour),
PRIMARY Key (Date_emprunt, Num_cd, Num_agt))
Je pensais pourtant que je pouvais faire un check de ce type ... ?
Re: Check sur une colonne de table "en cours"
Citation:
Envoyé par in2111
Voilà, je crée une table dans laquelle je fais un check sur une colonne...
Table Emprunts :
date_emprunt
agent
cd
date_retour
en fait je fais un check pour vérifier que date_retour est supérieure à date_emprunt.
Le message d'erreur est :
La contrainte de colonne CHECK pour la colonne 'Date_retour' fait référence à une autre colonne, table 'Emprunts'.
Voilà comment je fais ma création de table :
CREATE TABLE Emprunts (
Date_emprunt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Num_cd INTEGER CONSTRAINT fkEmprunts1 REFERENCES Cd(Num_cd),
Num_agt INTEGER CONSTRAINT fkEmprunts2 REFERENCES Agent (Num_agt),
Date_retour TIMESTAMP CONSTRAINT ckDateEmprunt CHECK( Date_emprunt < Date_retour),
PRIMARY Key (Date_emprunt, Num_cd, Num_agt))
Je pensais pourtant que je pouvais faire un check de ce type ... ?
Tu tentes un CHECK au niveau colonne, mais dans ton cas il faut la faire au niveau table, dixit l'aide :
Citation:
Il est également possible d'appliquer une seule contrainte CHECK à plusieurs colonnes en la créant au niveau de la table. Ainsi, vous pouvez recourir à une contrainte CHECK sur plusieurs colonnes pour confirmer que les lignes comportant la valeur USA dans leur colonne country possèdent également une valeur à deux caractères dans leur colonne state. La vérification de plusieurs conditions est donc effectuée de façon simultanée.