我有我的桌面用户:
+--------------------+--------------+------+-----+---------+-------+
| 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_id
和userid
更改为唯一键。
如果我通过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
?
答案 0 :(得分:0)
“如果UNIQUE索引不能包含NULL值并且表中没有PRIMARY KEY,则它可能显示为PRI。如果多列形成复合UNIQUE索引,则UNIQUE索引可能显示为MUL;尽管列的组合是唯一的,每列仍然可以保存给定值的多次出现。“
https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
找到我的答案。