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

mysql changing unique key to primary (mariadb)

我有 table 个用户:

+--------------------+--------------+------+-----+---------+-------+
| 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 而我从未指定过它?

"A UNIQUE index may be displayed as PRI if it cannot contain NULL values and there is no PRIMARY KEY in the table. A UNIQUE index may display as MUL if several columns form a composite UNIQUE index; although the combination of the columns is unique, each column can still hold multiple occurrences of a given value."

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

找到我的答案。