gpt4 book ai didi

SQL并发插入问题

转载 作者:行者123 更新时间:2023-11-29 12:21:02 24 4
gpt4 key购买 nike

我有一个关系 y(k, v) 其中 k 是一个键。在数据库上有并发连接,我在每个连接上运行:

INSERT INTO y 
SELECT 'k1', 'v1' WHERE NOT EXISTS (SELECT 1 FROM y WHERE k = 'k1');

有时我会收到以下错误:

ERROR: duplicate key value violates unique constraint "y_pk"

为什么会这样?可以避免吗?

最佳答案

这里的问题是,如果此查询同时在两个不同的连接中运行,则两者的 NOT EXISTS 条件都为真(在插入之前已测试),然后两个连接都插入相同的值。您需要表锁或尝试使用此脚本:

BEGIN
INSERT INTO Y(k,v) VALUES ('k1', 'v1');
EXCEPTION WHEN unique_violation THEN
END;

另请阅读此类似主题:SO:How do I do an UPSERT...

关于SQL并发插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279087/

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