Ich versuche, eine Tabelle so zu ändern, dass ihre Primärschlüsselspalte nachträglich erstellt wird AUTO_INCREMENT
. Ich habe das folgende SQL ausprobiert, aber eine Syntaxfehlerbenachrichtigung erhalten.
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
Mache ich etwas falsch oder ist das nicht möglich?
+ -------------------- + | VERSION () | + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
sql
mysql
alter-table
Kreuz
quelle
quelle
Roman hat recht, aber beachten Sie, dass die Spalte auto_increment Teil des PRIMARY KEY oder eines UNIQUE KEY sein muss (und in fast 100% der Fälle sollte es die einzige Spalte sein, aus der der PRIMARY KEY besteht):
quelle
In meinem Fall hat es nur funktioniert, wenn ich es gesetzt habe
not null
. Ich denke, das ist eine Einschränkung.quelle
Die SQL, um dies zu tun, wäre:
Es gibt mehrere Gründe, warum Ihr SQL möglicherweise nicht funktioniert. Zunächst müssen Sie den Datentyp erneut angeben (
INT
in diesem Fall). Außerdem muss die Spalte, die Sie ändern möchten, indiziert sein (es muss nicht der Primärschlüssel sein, aber normalerweise ist dies das, was Sie möchten). Außerdem kann esAUTO_INCREMENT
für jede Tabelle nur eine Spalte geben. Daher möchten Sie möglicherweise die folgende SQL ausführen (wenn Ihre Spalte nicht indiziert ist):Weitere Informationen finden Sie in der MySQL-Dokumentation: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html für die Syntax der Änderungsspalte und http://dev.mysql.com/doc Weitere Informationen zum Angeben von Spalten finden Sie unter /refman/5.1/en/create-table.html .
quelle
Sie müssen den Typ der Spalte vor der
auto_increment
Direktive angeben , dALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT
. H.quelle
MODIFY COLUMN
AUTO_INCREMENT
ist Teil des Datentyps der Spalte, müssen Sie den vollständigen Datentyp für die Spalte erneut definieren:(
int
Als Beispiel sollten Sie den Typ festlegen, den die Spalte zuvor hatte.)quelle
Sie können es so machen:
quelle
AUTO_INCREMENT
ist Teil des Datentyps der Spalte, müssen Sie den vollständigen Datentyp für die Spalte erneut definieren:(Als Beispiel sollten Sie den Typ festlegen, den die Spalte zuvor hatte.)
quelle
Mit der folgenden Abfrage können Sie die automatische Erhöhung von document_id festlegen
Es wird bevorzugt, auch den Primärschlüssel document_id zu erstellen
quelle
Die folgende Aussage funktioniert. Beachten Sie, dass Sie den Datentyp für den Spaltennamen erneut angeben müssen (deklarieren Sie den Datentyp, den die Spalte zuvor hatte).
quelle
Wenn keines der oben genannten Verfahren funktioniert, versuchen Sie dies. Das habe ich in MYSQL gemacht und ja, Sie müssen den Spaltennamen (document_id) zweimal schreiben.
quelle
Um die Spalte in MySQL zu ändern, verwenden wir Schlüsselwörter zum Ändern und Ändern. Angenommen, wir haben eine Tabelle erstellt wie:
Jetzt möchten wir den Typ der Spalten-ID mit automatischem Inkrement in eine Ganzzahl ändern. Sie können dies mit einem Befehl wie dem folgenden tun:
quelle
Vorherige Tabellensyntax:
Verwenden Sie diese Abfrage, um die TransactionId in das automatische Inkrementieren zu ändern
quelle
quelle
Genau wie dieser:
alter table document modify column id int(11) auto_increment;
quelle
Wenn Sie die Spalte erneut definieren, müssen Sie den Datentyp erneut angeben und ihm auto_increment hinzufügen, da er Teil des Datentyps ist.
quelle
Spalte als Primärschlüssel und auto_increment gleichzeitig festlegen:
quelle
ALTER TABLE Tabellenname MODIFY COLUMN id Datentyp auto_increment;
quelle
Verwenden Sie die folgenden Abfragen:
quelle