Wie erstelle ich eine Sequenz in MySQL?
I'm versucht, eine Sequenz in MySQL zu erstellen (I'm sehr neu zu SQL als Ganzes). I'm mit dem folgenden Code, aber es verursacht einen Fehler:
CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;
ORDID verweist auf ein Feld in einer Tabelle, die ich verwende. Wie kann ich die Sequenz richtig erstellen?
Bearbeiten:
Angeblich verwendet MySQL keine Sequenzen. Ich verwende jetzt den folgenden Code, aber auch dieser verursacht Fehler. Wie kann ich sie beheben?
CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code
Bearbeiten:
Ich glaube, ich habe eine Lösung gefunden. Für phpMyAdmin (das ich benutzte) können Sie den folgenden Code verwenden.
ALTER TABLE ORD AUTO_INCREMENT = 622;
Ich habe keine Ahnung, warum es diesen Code bevorzugt, aber falls noch jemand Hilfe braucht, hier ist sie:)
21
3
Dies ist eine Lösung die im MySQl-Handbuch vorgeschlagen wird:
Sehen Sie sich diesen Artikel an. Ich glaube, er sollte Ihnen helfen, das zu bekommen, was Sie wollen. Wenn Ihre Tabelle bereits existiert und bereits Daten enthält, kann der Fehler, den Sie erhalten, darauf zurückzuführen sein, dass auto_increment versucht, einen Wert zuzuweisen, der bereits für andere Datensätze existiert.
Kurz gesagt, wie andere bereits in Kommentaren erwähnt haben, gibt es Sequenzen, wie sie in Oracle gedacht und gehandhabt werden, in MySQL nicht. Sie können jedoch wahrscheinlich auto_increment verwenden, um zu erreichen, was Sie wollen.
Ohne weitere Details zu dem spezifischen Fehler ist es schwierig, genauere Hilfe zu leisten.
UPDATE
Dieser Link ist ebenfalls hilfreich für die Beschreibung der Verwendung von auto_increment. Das Setzen des AUTO_INCREMENT-Wertes scheint eine Tabellenoption zu sein, und nicht etwas, das speziell als Spaltenattribut angegeben wird.
Laut einem der obigen Links können Sie alternativ den Startwert von auto increment über eine Änderung Ihrer Tabelle festlegen.
UPDATE 2 Hier ist ein Link zu einem funktionierenden sqlfiddle-Beispiel, das auto increment verwendet.
Ich hoffe, diese Informationen helfen.
Bei der Erstellung der Inkrement-Tabelle sollten Sie darauf achten, eingefügte Zeilen nicht zu löschen. Der Grund dafür ist, die Speicherung großer dummer Daten in der Datenbank mit IDs darin zu vermeiden. Andernfalls würde bei einem Neustart von mysql die maximal existierende Zeile abgerufen und die Inkrementierung von diesem Punkt aus fortgesetzt, wie in der Dokumentation erwähnt http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html