2010-11-20 15 views
0

Je crée une application Web qui contient 4 importantesest-il possible de définir un point de départ et une valeur maximale pour un auto-incrémentation dans mysql?

et pour accélérer l'identification de id dont ID est incrémentée automatique pour ce

j'espérais fixer des limites sur le nombre incrémentée de autp.

exemple:

orderid = 10000000 donc générerait un nombre compris entre 10 m - 19999999

palletid = 20000000 20 m - 29999999

ProductID = 30000000 30 m - 39999999

et lorsque ces id Atteindre une limite vont-ils commencer à réutiliser les anciens numéros qui sont maintenant disponibles?

+0

Veuillez lire les informations sur l'amorçage – CarneyCode

Répondre

1

Ce n'est pas comme ça que fonctionnent les colonnes auto-incrémentées.

Bien sûr, vous pouvez probablement définir le point de départ, mais un maximum et la partie sur la réutilisation des anciens numéros, désolé, pas intégré dans le système.

Pourquoi avez-vous besoin de cela?

Le consensus général est que si vous utilisez des colonnes autoincrément vous ne vous souciez pas vraiment de la valeur elle-même. Bien sûr, vous vous souciez que c'est unique, mais vous ne vous souciez pas de la valeur réelle.

Alors, puisque cela vous intéresse, pourquoi vous en souciez-vous? Pourquoi en avez-vous besoin pour réutiliser les anciens numéros?

Vous dites que vous voulez l'utiliser pour identifier les différents éléments du système. Vous voulez dire, pour les utilisateurs? Pourquoi ne pas simplement utiliser un préfixe? O123 pour les commandes, C123 pour les clients, P123 pour les produits, etc.

+0

J'ai envisagé d'utiliser des préfixes, mais j'avais espéré simplifier cela en laissant sql gérer cela pour moi. –

+0

il y a beaucoup plus d'identifiants dans le système mais ces 3 seront utilisés pour identifier une palette, une commande et un produit. –

0

Nope, mais essayer quelque chose comme ceci:

INSERT INTO table VALUES(id) 
(
Case when 
(
    SELECT id FROM table 
    LIMIT COUNT(SELECT * FROM table)-1, 1) >= maximumhere 
) 
then minimumhere 
else MAX(SELECT id FROM table)+1 
) 

Ceci est juste théorique bien sûr, le jeu avec elle ...