PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » insérer une valeur nulle et contrainte check » 25/01/2012 14:48:24

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

#2 Re : Général » insérer une valeur nulle et contrainte check » 25/01/2012 11:48:56

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

#3 Re : Général » insérer une valeur nulle et contrainte check » 25/01/2012 11:39:44

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

#4 Général » insérer une valeur nulle et contrainte check » 25/01/2012 11:14:03

elfunesto
Réponses : 5

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

Pied de page des forums

Propulsé par FluxBB