将PostgreSQL中的唯一索引改为可延迟。

3

我需要修改已经创建的唯一索引,将其设置为可延迟。在PostgreSQL 9.6中,基本上我会执行以下操作:

DROP TABLE IF EXISTS test;

CREATE TABLE test (id integer);

ALTER TABLE test ADD CONSTRAINT unique_id unique(id);

ALTER TABLE test ALTER CONSTRAINT unique_id DEFERRABLE INITIALLY DEFERRED;

但是我收到了

ERROR:  constraint "unique_id" of relation "test" is not a foreign key constraint

文档似乎没有提到不能执行此操作,我错过了什么吗?

1个回答

7
根据文档:

ALTER CONSTRAINT

这种形式可以修改先前创建的约束的属性。目前只能修改外键约束。

相反,您可以:
ALTER TABLE test DROP CONSTRAINT unique_id;
ALTER TABLE test ADD CONSTRAINT unique_id unique(id) DEFERRABLE INITIALLY DEFERRED;

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