在不锁定 PostgreSQL 中的表的情况下在大表(600 万条记录)上创建主键

问题描述 投票:0回答:1

我想在一个有 600 万条记录的表上创建一个主键,但是当我执行这个时:

ALTER TABLE schema_name.table_name ADD CONSTRAINT pkey_name PRIMARY KEY (field_pkey_name);

它正在锁定我的表并且更改表没有完成执行...

sql postgresql primary-key primary-key-design
1个回答
7
投票

尝试分两步进行:

CREATE UNIQUE INDEX CONCURRENTLY pkey_name
   ON schema_name.table_name (field_pkey_name);

ALTER TABLE schema_name.table_name
   ADD CONSTRAINT pkey_name PRIMARY KEY USING INDEX pkey_name;

还是会花很长时间(甚至更长),但是不会长时间锁表

© www.soinside.com 2019 - 2024. All rights reserved.