mysql将唯一键更改为primary(mariadb)

时间:2017-12-21 22:37:37

标签: mysql mariadb primary-key myisam unique-key

我有我的桌面用户:

+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid             | varchar(30)  | YES  |     | NULL    |       |
| lname              | varchar(40)  | YES  |     | NULL    |       |
| fname              | varchar(20)  | YES  |     | NULL    |       |
| system_id          | varchar(12)  | YES  |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

我希望将system_iduserid更改为唯一键。

如果我通过ALTER TABLE users MODIFY userid varchar(30) NOT NULL UNIQUE KEY;更改它们,我会:

+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid             | varchar(30)  | NO   | PRI | NULL    |       |
| lname              | varchar(40)  | YES  |     | NULL    |       |
| fname              | varchar(20)  | YES  |     | NULL    |       |
| system_id          | varchar(12)  | YES  |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

然后如果我更改了system_id ALTER TABLE users MODIFY system_id varchar(30) NOT NULL UNIQUE KEY;

+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid             | varchar(30)  | NO   | PRI | NULL    |       |
| lname              | varchar(40)  | YES  |     | NULL    |       |
| fname              | varchar(20)  | YES  |     | NULL    |       |
| system_id          | varchar(12)  | NO   | UNI | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

为什么MySQL在我从未指定时将UNIQUE键更改为PRI

1 个答案:

答案 0 :(得分:0)

“如果UNIQUE索引不能包含NULL值并且表中没有PRIMARY KEY,则它可能显示为PRI。如果多列形成复合UNIQUE索引,则UNIQUE索引可能显示为MUL;尽管列的组合是唯一的,每列仍然可以保存给定值的多次出现。“

https://dev.mysql.com/doc/refman/5.7/en/show-columns.html

找到我的答案。