更改一个唯一索引,以便在postgresq中将其设置为可延迟

时间:2018-05-31 20:45:20

标签: postgresql postgresql-9.6

我需要更改已创建的唯一索引以将其设置为可延迟。在postgres 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 个答案:

答案 0 :(得分:3)

the documentation:

  

ALTER CONSTRAINT

     

此表单更改先前创建的约束的属性。目前只有外键约束可能会被更改。

相反,您可以:

ALTER TABLE test DROP CONSTRAINT unique_id;
ALTER TABLE test ADD CONSTRAINT unique_id unique(id) DEFERRABLE INITIALLY DEFERRED;