impossible de mettre DEFAULT avec AUTO_INCREMENT ! - SQL/NoSQL - Programmation
Marsh Posté le 27-03-2007 à 21:07:19
Bonjour,
Pourquoi donner une valeur par défaut à une valeur qui va toujours s'incrémenter ?
La valeur par défaut n'est pas la valeur initiale. C'est la valeur qui est mise lors d'une insertion, si la colonne n'est pas précisée.
Donner une valeur par défaut à un champ auto_increment revient à donner deux ordres contradictoires : le premier est de s'autoincrémenter, le second est de ne pas s'autoincrémenter.
La solution consiste à ne pas donnr de valeur par défaut un champ qui s'auto_incrémente, ou de ne pas choisir ce type de champ.
Marsh Posté le 28-03-2007 à 11:24:50
Oui c'est vrai que la solution consistant à ne pas donner de valeur par défaut est satisfaisante.
Pourtant, cette requête fait partie d'un petit programme en php qui date un peu (timecop), et cela semble marcher pour les anciennes versions... mysql est il plus stricte sur la syntaxe au fil des versions?
Marsh Posté le 28-03-2007 à 14:11:45
oui , myslqu a evolué legerement dans sa syntaxe au fil des versions
maisi de toute maniere, comme l'a dis olivthill, c'est pas interessant de mettre uen valeur apr defaut a un champ qui s'auto incremente
a la limite, tu peux lui mettre une valeur de base
Marsh Posté le 28-03-2007 à 17:53:33
avec :
cal_id int( 10 ) unsigned NOT NULL AUTO_INCREMENT
si l'on ne précise rien la valeur de base (pour la 1ere entrée) est 0 ou 1 ?
merci à vous
Marsh Posté le 27-03-2007 à 18:32:16
Bonjour à tous,
J'ai un petit problème concernant la création d'une table. Voici ma requête :
CREATE TABLE calepin(
cal_id int( 10 ) unsigned DEFAULT '0' NOT NULL AUTO_INCREMENT,
cal_societe varchar( 50 ) NOT NULL ,
cal_nom varchar( 50 ) NOT NULL ,
cal_prenom varchar( 30 ) NOT NULL ,
...
);
et on me répond :
#1067 - Invalid default value for 'cal_id'
Pourtant cette requête semble correcte niveau syntaxe, je soupçonne un problème de version de mysql (je suis en mysql 5.0.19).
(la requête passe en enlevant la valeur par défaut).
Qu'en pensez vous? Comment quelles versions de myql supporte ce script? Comment le modifiez pour qu'il passe en 5.0 ?
merci de votre aide!