mysql - 如果一個主鍵有auto_increment,刪除該主鍵之前為什么需要先去掉auto_increment
問題描述
mysql> SHOW COLUMNS FROM tb;+----------+----------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+----------------------+------+-----+---------+----------------+| id | smallint(6) | NO | PRI | NULL | auto_increment || username | varchar(20) | NO | UNI | NULL ||| age | smallint(6) | NO | | NULL ||| score | smallint(5) unsigned | YES | | 0 ||+----------+----------------------+------+-----+---------+----------------+4 rows in set (0.00 sec)mysql> ALTER TABLE tb DROP PRIMARY KEY;ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a keymysql> ALTER TABLE tb MODIFY id SMALLINT NOT NULL;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> SHOW COLUMNS FROM tb;+----------+----------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+----------------------+------+-----+---------+-------+| id | smallint(6) | NO | PRI | NULL | || username | varchar(20) | NO | UNI | NULL | || age | smallint(6) | NO | | NULL | || score | smallint(5) unsigned | YES | | 0 | |+----------+----------------------+------+-----+---------+-------+4 rows in set (0.00 sec)mysql> ALTER TABLE tb DROP PRIMARY KEY;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> SHOW COLUMNS FROM tb;+----------+----------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+----------------------+------+-----+---------+-------+| id | smallint(6) | NO | | NULL | || username | varchar(20) | NO | PRI | NULL | || age | smallint(6) | NO | | NULL | || score | smallint(5) unsigned | YES | | 0 | |+----------+----------------------+------+-----+---------+-------+4 rows in set (0.00 sec)
問題解答
回答1:好像是這樣的,自增字段必須是主鍵。刪除主鍵但對應字段是自增的話,拋錯。
