[英]Converting primary key into unique key in mysql
我有一张这样的桌子:
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| num | int(11) | NO | PRI | NULL | |
| t | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
如果我需要将 num 的约束从主键更改为唯一键,我该怎么办? 我做了:
alter table c2 modify num integer unique key;
output:
mysql> desc c2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| num | int(11) | NO | PRI | NULL | |
| t | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
另一个 :
alter table c2 drop constraint num;
output : ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint num' at line 1
我还可以用什么来将主键更改为唯一键???
请show create table c2
,而不是desc
,以便更好地了解有哪些索引。 您的第一个成功的更改表添加了一个唯一键,但这不会删除主键。 要同时删除主键,请执行以下操作:
alter table c2 drop primary key;
然后 show create table 将显示 num 是唯一键,而不是主键。
但是,mysql 确实要求所有表都具有主键; 如果您不指定一个,并且存在一个所有列not null
的唯一键,它将使用它作为主键,否则,它将创建一个隐藏列以用作主键。 显然desc
仍将显示合格的唯一键为PRI
,即使它仅用作主键,实际上并未指定为主键。
https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=f1d7542f80421eca1b37a2373715f800
第一个唯一键将在 desc 命令中显示为主键。 但是您可以使用以下命令进行检查
显示创建表c2;
然后你会找到UNIQUE KEY num
( num
) ,如果你可以删除唯一键,你可以删除下面的alter query/command
更改表 c2 删除键号;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.