使用PostgreSQL更新多个表中的主键
- 论坛
- 使用PostgreSQL更新多个表中的主键
24 浏览
匿名的
0 Comments
问题的原因是希望将多个表中的主键更新为全局唯一的值。解决方法是创建一个序列,然后通过循环更新每个表的主键。
首先,创建一个用于提供唯一id的序列:
CREATE SEQUENCE globally_unique_id;
然后,通过循环更新每个表的主键:
UPDATE table1 SET id = nextval('globally_unique_id');
使用这个序列可以确保所有表中的行都具有不同的id。
如果其他表对'id'列有外键约束,并且没有声明级联更新约束,那么问题可能会更复杂。但这是另一个故事了。
当然,你不需要逐个表进行更新。你可以查询Postgres系统表获取所有表的名称,然后在某个特殊构造的查询或过程中循环处理这些表的主键。
但在我看来,只有11个表可能不值得编写这个逻辑。另一方面,如果将来需要再次进行相同的操作,这个方法可能会很有用。