gpt4 book ai didi

postgresql - 有没有办法在 Postgres 中按需一次生成一些行集?

转载 作者:行者123 更新时间:2023-11-29 13:27:45 25 4
gpt4 key购买 nike

基本问题是我们正在管理大量生成的行,并且仅在必要时仅生成一次该数据是关键任务。假设你有一个数据关系:

CREATE TABLE sometable (
id SERIAL,
refID INTEGER,
...
);

现在,在一些 PL/PGSQL 函数中我们有:

...
-- Advisory locks didn't help here? :(
IF FALSE = SELECT EXISTS( SELECT 1 FROM sometable WHERE refID = dataID) THEN
-- Generate fixed number of new rows in sometable that reference dataID.
END IF;
...

简而言之,有些时候不应该生成多次的行。如前所述,PERFORM pg_advisory_lock(dataID) 形式的咨询锁遗憾地无助于防止这种情况发生。还有希望吗?

编辑:忘记提及我在使用 pgbench 进行测试时遇到了重复数据问题。

编辑 2:错误的代码修复,澄清问题。

最佳答案

也许最简单的解决方案就是拥有一个单独的 processed_ids 表,并对所讨论的 id 进行唯一约束。您的函数可以尝试插入该表,如果出现异常,则该 ID 已被处理。

关于postgresql - 有没有办法在 Postgres 中按需一次生成一些行集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542210/

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