impossible de mettre DEFAULT avec AUTO_INCREMENT !

impossible de mettre DEFAULT avec AUTO_INCREMENT ! - SQL/NoSQL - Programmation

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!

Reply

Marsh Posté le 27-03-2007 à 18:32:16   

Reply

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.

Reply

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?

Reply

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

Reply

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

Reply

Marsh Posté le 28-03-2007 à 18:30:44    

1

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed