Page 1 sur 2

Champ mysql auto_increment

Posté : 03 août 2005, 15:59
par bins
Bonjour,
Je voudrais faire un champ en clé primaire et avec auto increment mais qui commence par 2005-[nb en auto increment], comment faire ?

Posté : 03 août 2005, 16:04
par ouckileou
impossible avec le -

en autoincrement c'est un nombre

Posté : 03 août 2005, 16:08
par bins
et on peut meme pas 2005_[autoincrement] ? je voudrais en fait pouvoir mettre un prefixe statique devant le auto increment

Posté : 03 août 2005, 16:11
par ouckileou
en autoincrement c'est un nombre
tiret ou souligné c'est pareil

si ce préfixe ne change pas, met le dans le code et concatène le avec le numéro

pourquoi as-tu besoin de ce préfixe ? à quoi correspond cet identifiant ?

Posté : 03 août 2005, 16:49
par bins
Pour savoir par le numéro auto_increment : l'année

Posté : 03 août 2005, 16:52
par ouckileou
on ne stocke pas une année dans le champ d'identification

un identifiant sert à identifier la ligne, à la repérer grâce à un numéro unique
auto increment est le moyen pratique de ne pas faire toutes les manipulations pour créer ce numéro

si tu veux stocker une année : tu fais un champ de type entier et tu la mets dedans
ou un champ date

mais là tu va mélanger des types de données et ça ne pourra que te créer des problèmes par la suite

Posté : 03 août 2005, 19:22
par bins
En fait ce sont des numéro de fiche, et qui sert d'identifient. Pour le premier inscrit son numéro sera 1 et c'est trop court pour un identifiant

Posté : 03 août 2005, 19:24
par ouckileou
pourquoi est-ce trop court ???

Posté : 03 août 2005, 19:27
par raptor
parce que quand l'administration t'envoi une fiche X ou Y, t'a toujours un numero a 50 ou 60 chiffres qui t'es attribué :p

Il veut ptetre faire pareil :)

Posté : 03 août 2005, 19:29
par bins
Oué mais 10 chiffres

Posté : 03 août 2005, 19:32
par raptor
faut pas le mettre en auto-increment alors :)

Posté : 03 août 2005, 19:36
par bins
Ok mais je veut qu'il augmente de 1 automatiquement

Posté : 03 août 2005, 19:39
par raptor
Mais je vois pas pourquoi "1 ca fait court".
Le premier est 1 c'est tout -_-

Posté : 03 août 2005, 19:47
par ouckileou
c'est clair, quand t'es le premier t'as le numéro 1, quand t'es le 500 000ième abonné, t'as 6 chiffres

et quand t'as la carte n°1, 25 ans après quand le club est connu tu te la pètes, et t'es célèbre quand tu meurs, comme l'abonné numéro du F.C. Barcelone :lol:

non sérieusement je ne vois pas pourquoi tu veux avoir 10 chiffres...

mais si tu veux vraiment il y a l'attribut ZEROFILL, qui complétera avec des 0 jusqu'à la longueur voulue

Posté : 03 août 2005, 19:47
par Cyrano
Fais le par programmation : récupère le plus grand nombre enregistré avec un SELECT MAX(nom_du_champ) puis fais une extraction de la partie que tu veux incrémenter. Incrémente là et refais la concaténation avec le préfixe que tu veux (ici 2005 si j'ai bien compris que tu peux même récupérer avec date("Y") pour l'année en cours ce qui t'évite de le programmer en dur) et quand tu fais ton insertion, utilises le résultat pour alimenter ce champ là.

De la manière dont tu veux procéder, il n'y a pas vraiment d'autre méthode.