Vous n'êtes pas identifié(e).
Pages : 1
Bonjour, nouveau sous PostgreSQL 9.2.4, j'ai tenté de remplir une petite table :
CREATE TABLE test(
id integer PRIMARY KEY,
nom varchar(10) ,
prix integer
);
la création se passe bien mais lors de l'insertion
INSERT INTO "public"."test" ("id","nom","prix")
VALUES ('2','','')
la réponse est:
Erreur SQL :
ERREUR: syntaxe en entrée invalide pour l'entier : « »
LINE 2: VALUES ('2','','')
^
si je mets une valeur dans prix c'est ok
La même erreur survient en utilisant phpPgAdmin
pourquoi, qu'ai-je mal fait?
merci de vos conseils
Hors ligne
Une chaîne vide n'est pas une valeur entière. Si vous voulez y indiquer une valeur inconnue, utilisez NULL. Sinon indiquez un nombre.
Guillaume.
Hors ligne
Merci pour la réponse mais comment faites-vous pour insérer NULL. D'après la doc ceci est automatique si le champ est laissé vide.
Avec phpPgAdmin, c'est ce qui se passe pour la chaine mais pas pour l'entier, pourquoi?
La solution pour les nombres serait-elle de cocher la case NULL? cela fonctionne mais c'est fastidieux.
Hors ligne
Merci pour la réponse mais comment faites-vous pour insérer NULL. D'après la doc ceci est automatique si le champ est laissé vide.
Vous n'avez pas laissé le champ vide, vous avez essayé d'y insérer une chaîne vide. Nuance
Pour répondre à votre question, si vous indiquez le nom du champ, vous devez indiquer sa valeur, donc :
INSERT INTO "public"."test" ("id","nom","prix") VALUES ('2','', NULL);
Vous pouvez ne pas indiquer sa valeur en n'indiquant pas la colonne, comme ceci :
INSERT INTO "public"."test" ("id","nom") VALUES ('2','');
La colonne prix prendra ainsi la valeur par défaut. Si aucune valeur par défaut n'est indiquée dans la définition de la colonne, elle prendra automatiquement la valeur NULL.
Avec phpPgAdmin, c'est ce qui se passe pour la chaine mais pas pour l'entier, pourquoi?
Je ne connais pas bien phpPgAdmin mais je suppose que vous avez une case à cocher soit pour prendre en compte la colonne, soit pour préciser une valeur NULL. Si vous ne les prenez pas en compte et que vous ne saisissez rien dans le champ, il va renvoyer une chaîne vide, ce qui est suffisant pour une colonne de type texte mais pas pour une colonne de type entier.
La solution pour les nombres serait-elle de cocher la case NULL? cela fonctionne mais c'est fastidieux.
Voilà, c'est donc bien une case NULL. Concernant le "fastidieux", personne n'a prétendu que phpPgAdmin était la meilleure interface pour saisir des données. C'est plutôt une console d'administration.
Guillaume.
Hors ligne
Réponse très complète dont je vous remercie. Mon erreur venait d'avoir cru que phpPgAdmin savait traiter les colonnes sans données sans autre spécification.
Hors ligne
Pages : 1