SELECT DISTINCT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'your_database_name' AND
TABLE_NAME = 'your_table_name' AND
COLUMN_NAME = 'the_column_that_is_unique';
SELECT DISTINCT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'animals' AND
TABLE_NAME = 'pets' AND
COLUMN_NAME = 'lucky_number';
6条答案
按热度按时间jtjikinw1#
如果您的列使用
UNIQUE
子句定义为唯一,则用途:,或者,如果约束是隐式命名的,
如果使用
PRIMARY KEY
子句定义了unique,则用途:但是,请注意,如果表是
InnoDB
,删除PRIMARY KEY
将导致隐式地重新创建表并重建所有索引,这将锁定表,并可能使其在相当长的时间内无法访问。k5ifujac2#
以下是phpmyadmin应用程序的说明(如果您使用的是phpMyAdmin)::
在某些情况下,开发人员(您)可能不想删除它,而只是将“唯一性”修改为“非唯一性”。
步骤:
1.转到要进行修改的上下文中的表
1.点击“结构”选项卡(主要是浏览旁边)
1.找到“+索引”链接,就在列下面。是的…现在点击它
1.现在你可以看到所有的“索引”,你现在可以点击“删除”按钮或链接进行修改。
答案在这里找到:来源:https://forums.phpfreaks.com/topic/164827-phpmyadmin-how-to-make-not-unique/
dhxwm5r43#
只要
DROP
唯一索引。这是一个活动数据库,这应该不会有问题。如果它是一个非常大的表,你可能会在删除索引时暂时阻止一些查询。但是,只有在添加索引时才会发生这种情况。nimxete24#
虽然公认的答案是不正确的(见评论),但建议的变通方法是可能的。但它也不正确,至少对于一个“活表”,正如所问的那样。
为了降低影响,您应该首先创建一个新索引,然后删除旧索引:
这避免了使用没有索引的表(列),这对客户端和MySQL本身来说都是非常痛苦的。
dwbf0jvd5#
如果要使其不唯一的唯一键被外键约束使用,则在删除它时会出现错误。您必须在同一行重新创建它:
yqhsw0fo6#
您需要删除与该列名关联的约束或索引。要删除它,您需要删除它。以下是您的操作方法:
首先,查找唯一索引或唯一约束的名称。您可以使用以下查询查找索引名称:
例如,我们在数据库animals中有一个表pets,每个pets都有一个幸运数字。由于错误,我们使lucky_number列唯一,但pets可以有相同的幸运数字。下面是我们如何找到与该列相关联的约束:
我们必须得到以下输出:output
在此之后,我们需要删除它。我们可以通过运行以下命令来完成:
在我们的例子中,上面的命令变为: