gpt4 book ai didi

postgresql - 一个简单的 pg/plsql 循环示例

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

我们正在重新设计 postgres 中的表架构。它曾经有一个链接器表,指向名称为 partner_advertiser 的两个表 partneradvertiser,因为我们假设合作伙伴之间存在多对多关系和广告商。进行了一项更改,使得 advertiser 应只有一个 partner,因此 partner 将与 advertiser< 具有单向关系.

如何在不丢失先前信息的情况下进行更改?链接器表数据必须用于填充新模式设计的映射。这是我的初始代码:

BEGIN

FOR r IN SELECT partnerid, advertiserid from partner_advertiser
LOOP
NEXT r;
UPDATE advertiser SET partnerid = r.partnerid WHERE id = r.advertiserid
END LOOP;

END

顺便说一句,我自己还没有做过任何 pg/plsql。因此,如果有任何我应该采取的基本步骤,请提醒我。

最佳答案

您可以使用:

UPDATE advertiser a SET partnerid = r.partnerid
FROM partner_advertiser r
WHERE a.id = r.advertiserid

通常,像这样的简单关系转换永远不需要循环。不过,如果您真的需要一个,请查看 http://www.postgresql.org/docs/9.0/interactive/plpgsql-control-structures.html

一个额外的注意事项:如果 advertisid 不是唯一的,任何转换显然都会丢失数据,因此您应该首先运行类似的东西

SELECT count(*), advertiserid FROM partner_advertiser
GROUP BY advertiserid HAVING COUNT(*) > 1

如果返回任何行,您将需要手动修复。

关于postgresql - 一个简单的 pg/plsql 循环示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114336/

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