it-swarm.com.de

ALTER-Tabelle - Hinzufügen von AUTO_INCREMENT in MySQL

Ich habe eine Tabelle in MySQL mit in der Spalte itemID erstellt. Nachdem ich die Tabelle erstellt habe, möchte ich diese Spalte in AUTOINCREMENT ändern. Wie geht das mit ALTER-Anweisungen?

Tabellendefinition:

ALLITEMS (itemid int(10) unsigned, itemname varchar(50))

Ich benutze den folgenden Code, aber er wirft Fehler: Syntax falsch.

ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT; 
65
Sumit Gupta
CREATE TABLE ALLITEMS(
    itemid INT(10)UNSIGNED,
    itemname VARCHAR(50)
);

ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY;

DESC ALLITEMS;

INSERT INTO ALLITEMS(itemname)
VALUES
    ('Apple'),
    ('Orange'),
    ('Banana');

SELECT
    *
FROM
    ALLITEMS;

Ich war vorher auch mit den Schlüsselwörtern CHANGE und MODIFY verwechselt:

ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY;

ALTER TABLE ALLITEMS MODIFY itemid INT(5);

Während wir dort sind, beachten Sie auch, dass AUTO_INCREMENT kann auch mit einer vordefinierten Nummer beginnen:

ALTER TABLE tbl AUTO_INCREMENT = 100;
92
ThinkCode

Die Syntax:

   ALTER TABLE `table1` CHANGE `itemId` `itemId` INT( 11 ) NOT NULL AUTO_INCREMENT 

Die Tabelle benötigt jedoch einen definierten Schlüssel (ex-Primärschlüssel auf itemId).

15
blejzz
ALTER TABLE `ALLITEMS`
    CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
12
dee-see

Grundlegende Syntax zum Hinzufügen eines AUTO_INCREMENT PRIMARY KEY zur vorhandenen Tabelle des OP:

ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY;

Oder für eine neue Tabelle hier das Syntaxbeispiel aus the docs :

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

Fallen und Dinge zu beachten:

  • Eine Spalte AUTO_INCREMENT Muss einen Index enthalten. (Normalerweise möchten Sie, dass es der PRIMARY KEY ist, MySQL benötigt dies jedoch nicht.)
  • Es ist normalerweise eine gute Idee, Ihre AUTO_INCREMENT - Spalten UNSIGNED zu erstellen. Aus den Dokumenten:

    Verwenden Sie nach Möglichkeit das Attribut UNSIGNED, um einen größeren Bereich zuzulassen.

  • Wenn Sie eine CHANGE - oder MODIFY -Klausel verwenden, um eine Spalte AUTO_INCREMENT Zu erstellen (oder in der Tat , wann immer Sie Verwenden Sie eine CHANGE - oder MODIFY -Klausel. Achten Sie darauf, alle Modifikatoren für die Spalte, wie NOT NULL oder UNSIGNED, die in der Tabelle angezeigt werden, einzuschließen Definition, wenn Sie SHOW CREATE TABLE yourtable aufrufen. Diese Modifikatoren gehen sonst verloren.
6
Mark Amery
ALTER TABLE allitems
CHANGE itemid itemid INT(10) AUTO_INCREMENT;
2
user747858
ALTER TABLE tblcatalog
    CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT FIRST;
1