有了Oracle的经验,我假设每个唯一的约束都会重用唯一的索引。
我创建了模式填充脚本,该脚本创建了命名唯一索引,然后创建了相同的唯一约束。这样,我希望显式地设置索引名,而不是在Postgres默认命名模式上进行中继。
如实验所示,我得到了两个定义相同的索引,结果如下:
CREATE UNIQUE INDEX agent_ux ON agent (branch_id, initials);
ALTER TABLE agent ADD CONSTRAINT agent_uk UNIQUE (branch_id, initials);
select indexname from pg_indexes where tablename = 'agent';
agent_ux
agent_ukPostgres不为唯一的键约束重用唯一索引吗?
注意到I不能删除与唯一约束对应的索引(错误表示相关约束),但是如果删除约束,索引就会自动删除。
发布于 2019-01-02 17:15:25
在postgres中,创建唯一约束会自动创建索引。还可以通过使用ALTER TABLE ttt add constraint ccc USING xxx语法:文档来提升现有索引来创建约束。
ALTER TABLE agent
ADD CONSTRAINT agent_uk UNIQUE USING agent_ux;未测
https://stackoverflow.com/questions/54009615
复制相似问题