[英]mysql changing unique key to primary (mariadb)
我有我的表用户:
+--------------------+--------------+------+-----+---------+-------+
| 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
?
“如果 UNIQUE 索引不能包含 NULL 值并且表中没有 PRIMARY KEY,则 UNIQUE 索引可能会显示为 PRI。如果多个列形成复合 UNIQUE 索引,则 UNIQUE 索引可能会显示为 MUL;尽管列的组合是唯一的,每列仍然可以保存多次出现的给定值。”
https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
找到了我的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.