在我的PostgreSQL数据库中,我以这种方式创建了一个唯一索引:
CREATE UNIQUE INDEX <my_index> ON <my_table> USING btree (my_column)
有没有办法更改索引以消除唯一约束?我查看了ALTER INDEX文档,但它似乎没有满足我的需求。
我知道我可以删除索引并创建另一个索引,但是我想找到一种更好的方法(如果存在)。
在我的PostgreSQL数据库中,我以这种方式创建了一个唯一索引:
CREATE UNIQUE INDEX <my_index> ON <my_table> USING btree (my_column)
有没有办法更改索引以消除唯一约束?我查看了ALTER INDEX文档,但它似乎没有满足我的需求。
我知道我可以删除索引并创建另一个索引,但是我想找到一种更好的方法(如果存在)。
Answers:
假设您具有以下条件:
Indexes:
"feature_pkey" PRIMARY KEY, btree (id, f_id)
"feature_unique" UNIQUE, btree (feature, f_class)
"feature_constraint" UNIQUE CONSTRAINT, btree (feature, f_class)
要删除UNIQUE CONSTRAINT,可以使用ALTER TABLE:
ALTER TABLE feature DROP CONSTRAINT feature_constraint;
要删除PRIMARY KEY,您还可以使用ALTER TABLE:
ALTER TABLE feature DROP CONSTRAINT feature_pkey;
要删除UNIQUE [index],可以使用DROP INDEX:
DROP INDEX feature_unique;
在相同的问题上搜索了几个小时,似乎没有得到正确的答案-所有给定的答案都无法正常工作。
对于非空值,我还花了一些时间来查找。显然由于某些原因,多数认证代码在我使用时不起作用。
我得到的不是非null版本代码,像这样
ALTER TABLE tablename
ALTER COLUMN column_want_to_remove_constriant
DROP NOT NULL
可悲的是将“ not null”更改为“ unique”无效。