web-dev-qa-db-fra.com

Table ALTER - ajout de AUTO_INCREMENT dans MySQL

J'ai créé une table dans MySQL avec la colonne itemID. Après avoir créé la table, je souhaite maintenant changer cette colonne en AUTOINCREMENT. Comment cela peut-il être fait en utilisant les instructions ALTER?

Définition du tableau:

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

J'utilise le code suivant mais il jette erreur: syntaxe incorrecte.

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;

J'ai été confondu avec les mots clés CHANGE et MODIFY auparavant:

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

ALTER TABLE ALLITEMS MODIFY itemid INT(5);

Pendant que nous y sommes, notons également que AUTO_INCREMENT peut également commencer par un nombre prédéfini:

ALTER TABLE tbl AUTO_INCREMENT = 100;
92
ThinkCode

La syntaxe:

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

Mais la table a besoin d'une clé définie (ex clé primaire sur itemId).

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

Syntaxe de base pour ajouter une AUTO_INCREMENT PRIMARY KEY à la table existante du PO:

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

Ou pour une nouvelle table, voici l'exemple de syntaxe de the docs :

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

Pièges et choses à noter:

  • Une colonne _AUTO_INCREMENT_ doit avoir un index. (D'habitude, vous voudrez que ce soit la clé primaire, mais MySQL ne l'exige pas.)
  • C'est généralement une bonne idée de créer votre _AUTO_INCREMENT_ colonnes UNSIGNED. D'après les documents:

    Utilisez si possible l'attribut UNSIGNED pour permettre une plus grande plage.

  • Lorsque vous utilisez une clause CHANGE ou MODIFY pour créer une colonne _AUTO_INCREMENT_ (ou bien à chaque fois vous utilisez une clause CHANGE ou MODIFY), vous devez veiller à inclure tous les modificateurs dans colonne, telle que _NOT NULL_ ou UNSIGNED, qui apparaît dans la définition de la table lorsque vous appelez _SHOW CREATE TABLE yourtable_. Ces modificateurs seront perdus autrement.
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
Ajay Singh Rathore