从MySQL表中删除唯一约束

248

如何使用phpMyAdmin从MySQL表的列中删除“唯一键约束”?


请查看http://forums.mysql.com/read.php?98,70887,70974#msg-70974。 - James Black
10个回答

424

唯一约束也是一个索引。

首先使用 SHOW INDEX FROM tbl_name 查找索引的名称。索引的名称存储在该查询结果中名为key_name的列中。

然后您可以使用DROP INDEX

DROP INDEX index_name ON tbl_name

或者使用ALTER TABLE语法:

ALTER TABLE tbl_name DROP INDEX index_name

1
抱歉,先生,我在提问之前已经尝试了,但它没有起作用。 - Ankur Mukherjee
那么除了删除索引之外,没有办法仅删除列的唯一约束吗? - Ankur Mukherjee
1
@Ankur Mukherjee:我认为我提出的方法是最好的做法。 - Mark Byers
1
我在某个问题中读到了使用phpMyAdmin的内容... @systemovich提供的答案应该被标记为被接受的答案。 - Pere
要删除可以使用 DROP INDEX Key_name ON tbl_name。 - SteveTz
显示剩余8条评论

132
您可以使用phpMyAdmin从表中删除唯一约束条件,如下表所示。在Wingspan字段上放置了唯一约束条件。此实例中,约束条件的名称与字段名称相同。

alt text


35
需要翻译的内容:请注意,索引部分默认为折叠状态,并通过位于截图中该部分位置的一个字号为12px、细微的小链接才会展开。但多亏了你,我找到它了。感谢你,加一赞。 - Jacklynn

11

能在表上放置唯一键约束的索引是PRIMARYUNIQUE索引。

要删除列上的唯一键约束但保留索引,可以使用类型为INDEX的语句来删除并重新创建该索引。

注意,最好让所有表都有一个标为PRIMARY的索引。


4
点赞是因为@thomasrutter提到删除唯一约束可能会对查询性能产生不利影响,这可以通过用普通索引替换“唯一”索引来缓解。 - Alex

9
要使用phpmyadmin添加UNIQUE约束,请转到该表的结构,找到下面并单击它,

enter image description here

同样的方式,要删除UNIQUE约束,请进入结构并向下滚动到索引选项卡,找到下面并单击删除,

enter image description here

希望这可以解决您的问题。
祝您愉快 ;)

这个解决方案正是我所寻找的。 - Aryeh Beitz

3
如果您想从MySQL数据库表中删除唯一约束,请使用带有drop index的alter table。
例如:
CREATE TABLE unique_constraints (
    unid INT,
    activity_name VARCHAR(100),
    CONSTRAINT activty_uqniue UNIQUE (activity_name),
    PRIMARY KEY (unid)
);

ALTER TABLE unique_constraints
DROP INDEX activty_uqniue;

activty_uqniueactivity_name 列的唯一约束。


2
对于WAMP 3.0: 点击Structure 在Add 1 Column下方,您将看到“- Indexes” 点击-Indexes并删除您想要的任何索引。

1

这可能有所帮助:

在您的 SQL 终端中

第一步:

SHOW INDEX FROM {YOUR_TABLE_NAME}

第二步:

SHOW INDEX FROM {YOUR_TABLE_NAME} WHERE Column_name='ACTUAL_COLUMN_NAME_YOU_GOT_FROM_FIRST_STEP_OUTPUT'

第三步:

ORIGINAL_KEY_NAME_VALUE = SECOND_STEP_RESPONSE["Key_name"]

第四步:

ALTER TABLE {YOUR_TABLE_NAME} DROP INDEX ${ORIGINAL_KEY_NAME_VALUE}


1

可以使用以下语法移除约束:

ALTER TABLE

从MySQL 8.0.19开始,ALTER TABLE 允许更通用(并符合SQL标准)的语法来删除和修改任何类型的现有约束,其中约束类型是由约束名称确定的:ALTER TABLE tbl_name DROP CONSTRAINT symbol;

示例:

CREATE TABLE tab(id INT, CONSTRAINT unq_tab_id UNIQUE(id));

-- checking constraint name if autogenerated
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'tab';

-- dropping constraint
ALTER TABLE tab DROP CONSTRAINT unq_tab_id;

db<>fiddle演示


-1

在删除唯一键时,我们使用索引

ALTER TABLE tbl
DROP INDEX  unique_address;

-3

我的表名是buyers,其中有一个唯一约束列emp_id,现在我要删除emp_id

步骤1:执行sp_helpindex buyers命令,查看图像文件

步骤2:复制索引地址

enter image description here

步骤3:修改表buyers,删除约束[UQ__buyers__1299A860D9793F2E],并删除列emp_id。

注意:

引用

请将buyers替换为您的表名 :)

引用

这样,带有约束的列名emp_id就被删除了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接