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

问题描述 投票:0回答:1

我有我的桌面用户:

+--------------------+--------------+------+-----+---------+-------+
| 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

mysql mariadb primary-key myisam unique-key
1个回答
0
投票

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

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

找到我的答案。

© www.soinside.com 2019 - 2024. All rights reserved.