web-dev-qa-db-ja.com

ALTERテーブル-MySQLにAUTO_INCREMENTを追加する

itemIDにMySQLのテーブルを作成しました。テーブルを作成した後、この列をAUTOINCREMENTに変更します。 ALTERステートメントを使用してこれをどのように行うことができますか?

テーブル定義:

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

次のコードを使用していますが、スローされていますエラー:構文が正しくありません

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;

以前にもCHANGEおよびMODIFYキーワードと混同されていました。

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

ALTER TABLE ALLITEMS MODIFY itemid INT(5);

そこにいる間に、AUTO_INCREMENTは事前定義された番号で開始することもできます。

ALTER TABLE tbl AUTO_INCREMENT = 100;
92
ThinkCode

構文:

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

ただし、テーブルには定義済みのキー(itemIdの主キーなど)が必要です。

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

AUTO_INCREMENT PRIMARY KEYをOPの既存のテーブルに追加するための基本的な構文:

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

または、新しいテーブルの場合、 ドキュメント の構文例を次に示します。

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

トラップと注意事項:

  • AUTO_INCREMENT列にはインデックスが必要です。 (通常、これをプライマリキーにしたいが、MySQLはこれを要求しない。)
  • 通常、AUTO_INCREMENT列をUNSIGNEDにすることをお勧めします。ドキュメントから:

    可能であれば、UNSIGNED属性を使用してより大きな範囲を許可します。

  • CHANGE句またはMODIFY句を使用して列AUTO_INCREMENTを作成する場合(または実際にwheneverCHANGE句またはMODIFY句を使用する場合)、すべての修飾子を含めるよう注意する必要がありますNOT NULLUNSIGNEDなど、SHOW CREATE TABLE yourtableを呼び出すときにテーブル定義に表示される列の場合。それ以外の場合、これらの修飾子は失われます。
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