gpt4 book ai didi

sql - 生成 SQL 以更新主键

转载 作者:行者123 更新时间:2023-11-29 11:11:32 26 4
gpt4 key购买 nike

我想更改一个主键和所有引用该值的表行。

# table master
master_id|name
===============
foo|bar

# table detail
detail_id|master_id|name
========================
1234|foo|blu

如果我给一个脚本或函数

 table=master, value-old=foo, value-new=abc

我想创建一个 SQL 片段,对所有引用表“master”的表执行更新:

update detail set master_id=value-new where master_id=value-new;
.....

在内省(introspection)的帮助下,这应该是可能的。

我用的是 postgres。

更新

问题是,有许多表具有表“master”的外键。我想要一种方法来自动更新所有具有主表外键的表。

最佳答案

到目前为止,处理主键更改的最简单方法是ALTER您的引用外键约束为ON UPDATE CASCADE

然后您可以自由更新主键值,并且更改将级联到子表。由于所有随机 I/O,这可能是一个非常缓慢的过程,但它会起作用。

在此过程中,您需要注意不要违反主键列的唯一性约束。

一个更简单但更快的方法是为新的 PK 添加一个新的 UNIQUE 列,填充它,向所有指向新 PK 的引用表添加新列,删除旧的 FK 约束和列,然后最后放弃旧的 PK。

关于sql - 生成 SQL 以更新主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271622/

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