2010-11-20 2 views
0

Ich schaffe eine Web-Anwendung, dieist es möglich, einen Startpunkt und maximalen Wert für ein Autoinkrement in mysql setzen?

4 wichtige ids enthält und Identifizierung zu beschleunigen, von denen automatisch erhöht id für ist, was

Ich hatte gehofft, Grenzen für die AUTP erhöht Zahl einzustellen.

Beispiel:

orderid = 10000000 so eine Zahl zwischen 10 m erzeugen würde - 19999999

palletid = 20000000 20m - 29999999

productid = 30000000 30m - 39999999

und wenn diese ids eine Grenze erreichen, werden sie anfangen, alte Nummern wiederzuverwenden, die jetzt verfügbar sind?

+0

Bitte lesen Sie weiter auf Seeding – CarneyCode

Antwort

1

So funktionieren Autoinkrement-Spalten nicht.

Sicher können Sie wahrscheinlich den Ausgangspunkt, aber ein Maximum und den Teil über die Wiederverwendung alter Nummern, sorry, nicht in das System eingebaut.

Warum brauchen Sie das?

Der allgemeine Konsens ist, dass wenn Sie Autoinkrement-Spalten verwenden, Sie nicht wirklich über den Wert selbst kümmern. Sicher, Sie kümmern sich, dass es einzigartig ist, aber es ist Ihnen egal, was der tatsächliche Wert ist.

So, wie Sie kümmern, warum kümmert es dich? Warum brauchst du es, um alte Nummern wiederzuverwenden?

Sie möchten damit die verschiedenen Elemente im System identifizieren. Du meinst, für Nutzer? Warum nicht einfach ein Präfix verwenden? O123 für Bestellungen, C123 für Kunden, P123 für Produkte usw.

+0

Ich habe über die Verwendung von Präfix gedacht, aber ich hatte gehofft, dies zu vereinfachen, indem ich es für mich sql behandeln. –

+0

Es gibt viel mehr IDs innerhalb des Systems, aber diese 3 werden verwendet, um eine Palette eine Bestellung und ein Produkt zu identifizieren. –

0

Nö, aber versuchen, etwas wie folgt aus:

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 
) 

Dies ist nur theoretisch natürlich, spielen mit ihm ...