gpt4 book ai didi

postgresql - 像这样从复合 PK 迁移到单个 PK 是否安全

转载 作者:行者123 更新时间:2023-12-04 08:54:15 27 4
gpt4 key购买 nike

我有一个包含复合 PK(code_id、user_id)的表,它已经有 100k 条记录。从复合 PK 移动到单个 PK 是否安全,如下例所示?

ALTER TABLE orders
DROP CONSTRAINT pk_code_id_user_id,
ADD COLUMN order_id SERIAL,
ADD CONSTRAINT pk_order_id PRIMARY KEY (order_id);

最佳答案

是的,这是安全的并且会起作用。
唯一的问题是这个语句可能需要一段时间才能完成:

  • 所有行都必须使用 DEFAULT 进行更新序列值
  • 建立了一个新的唯一索引
  • PostgreSQL 检查 order_id IS NOT NULL对于所有行

  • 在此期间,该表被锁定在 ACCESS EXCLUSIVE模式,所以它甚至不能用于并发阅读。
    但是像这样的小 table 应该不是什么大问题。
    如果存在引用旧主键约束的外键约束,事情会变得更加复杂。您也必须放弃这些并考虑一个好的替代品。

    关于postgresql - 像这样从复合 PK 迁移到单个 PK 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63922344/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com