Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 25/01/2012 11:14:03
- elfunesto
- Membre
insérer une valeur nulle et contrainte check
Bonjour,
j'ai un petit souci pour faire une requête simple sql:
J'ai une table comme ça:
CREATE TABLE lot_marq
(
"Lot_ID" integer NOT NULL
"Couleur_Milieu" character varying(50), -- Couleur de la VIE milieu ("JAUNE","ROUGE","ROSE","VERT","BLEU","ORANGE"),
CONSTRAINT cle_lot PRIMARY KEY ("Lot_ID"),
CONSTRAINT couleur_milieu CHECK ("Couleur_Milieu"::text = ANY (ARRAY['JAUNE'::character varying, 'ROUGE'::character varying, 'ROSE'::character varying]))
)
Quand j'essaie d'insérer une valeur avec une requête comme ça, ça marche
insert into lot_marq values (32,"ROUGE"); --syntaxe 1
insert into lot_marq ("Lot_ID") values (22); --syntaxe 2
Par contre si je fais
insert into lot_marq values (32,NULL); --syntaxe 3
ça ne marche pas. Or en lisant la doc http://www.postgresql.org/docs/8.1/stat … aints.html , et notamment ce paragraphe "It should be noted that a check constraint is satisfied if the check expression evaluates to true or the null value. Since most expressions will evaluate to the null value if any operand is null, they will not prevent null values in the constrained columns. To ensure that a column does not contain null values, the not-null constraint described in the next section can be used." je m'attendais à ce que ça marche. Est-ce qu'il y a quelque chose que je fais mal? Je peux toujours utiliser la syntaxe 2 mais dans mon cas précis ça complique pas mal mon programme...
Merci d'avance
Hilaire
Dernière modification par elfunesto (25/01/2012 11:46:24)
Hors ligne
#2 25/01/2012 11:37:08
- Marc Cousin
- Membre
Re : insérer une valeur nulle et contrainte check
Une fois corrigées les requêtes, on constate que ça marche très bien. La seule raison pour laquelle la syntaxe 3 est refusée, c'est qu'il y a déjà un Lot_ID à 32.
Marc.
Hors ligne
#3 25/01/2012 11:39:44
- elfunesto
- Membre
Re : insérer une valeur nulle et contrainte check
Bonjour,
Merci pour la réponse mais non, le problème n'est pas là
insert into lot_marq values (42,NULL); --syntaxe 3
ne marche pas plus malheureusement (le 32 n'était qu'à titre d'exemple). je reçois un message d'erreur mentionnant "la nouvelle ligne viole la contrainte de vérification « lot_marq » de la relation « couleur_milieu »"
Hilaire
Hors ligne
#4 25/01/2012 11:48:56
- elfunesto
- Membre
Re : insérer une valeur nulle et contrainte check
Rebonjour,
Autant pour moi, je dois avoir un problème dans ma base car sur une table simplifiée ça marche...
Je vais essayer de voir ça.
Désolé!
Hilaire
Hors ligne
#5 25/01/2012 14:48:24
- elfunesto
- Membre
Re : insérer une valeur nulle et contrainte check
ok problème résolu, l'erreur venait effectivement d'un autre point de ma requête... Désolé du dérangement pour rien...
Hilaire
Hors ligne
#6 25/01/2012 15:20:06
- Marc Cousin
- Membre
Re : insérer une valeur nulle et contrainte check
Pas de souci
Marc.
Hors ligne
Pages : 1