我怎么能在一个MySQL表的列上使用phpMyAdmin的“唯一键约束”?


当前回答

这可能会有帮助:

在sql终端内部

第一步:

显示{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}

其他回答

对于WAMP 3.0: 点击结构 下面添加1列,你会看到“-索引” 单击-Indexes并删除您想要的索引。

约束可以通过语法删除:

ALTER TABLE 从MySQL 8.0.19开始,ALTER TABLE允许使用更通用的(和SQL标准的)语法来删除和修改任何类型的现有约束,其中约束类型由约束名称决定:

例子:

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演示

能够在表上放置唯一键约束的索引是PRIMARY和unique索引。

若要删除列上的唯一键约束,但保留索引,可以使用index类型删除并重新创建索引。

注意,所有表都有一个标记为PRIMARY的索引是个好主意。

如果你想从MySQL数据库表中删除唯一的约束,使用alter table with drop index。

例子:

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;

其中actity_uqniue是activity_name列的唯一约束。

唯一的约束也是一个索引。

首先使用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