mysql将唯一键更改为主键(mariadb) [英] mysql changing unique key to primary (mariadb)

查看:120
本文介绍了mysql将唯一键更改为主键(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 更改为唯一键.

and I want to change the system_id and the userid to be unique keys.

如果我通过 ALTER TABLE用户更改了它们,则修改了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用户修改system_id varchar(30)NOT NULL UNIQUE KEY;

and then if I change the 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    |       |
+--------------------+--------------+------+-----+---------+-------+

为什么我从未指定将我的 UNIQUE 键更改为 PRI 的原因?

Why is MySQL changing my UNIQUE key to PRI when I never specified it to?

推荐答案

如果UNIQUE索引不能包含NULL值并且表中没有PRIMARY KEY,则它可能显示为PRI.如果多个列构成一个复合UNIQUE索引;尽管这些列的组合是唯一的,但每个列仍可以容纳多次出现的给定值."

"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

找到了我的答案.

这篇关于mysql将唯一键更改为主键(mariadb)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆