gpt4 book ai didi

sql - 为什么我在插入时违反了这个唯一约束

转载 作者:行者123 更新时间:2023-12-01 23:25:22 25 4
gpt4 key购买 nike

我通过从另一个可能有重复的表中进行选择来将数据插入到表中。我以为我的查​​询是通过检查该行是否已经存在来处理这个问题的,但我遇到了唯一约束冲突。

这里是查询:

INSERT INTO FOLDER_USER (FOLDER_ID, USER_ID) 
SELECT DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0'), USERID
FROM DATA1.FOLDERS F1
WHERE UPPER(OWNER) = 'ADMIN'
AND NOT EXISTS
(SELECT 1 FROM FOLDER_USER F2
WHERE DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0')= F2.FOLDER_ID
AND F1.USERID = F2.USER_ID);
  • 表 FOLDER_USER 包含 2 列 FOLDER_ID(数字)、USER_ID(varchar) 并将它们组合起来构成主键
  • 表 FOLDERS 包含 2 列 FOLDERID 和 USERID(均为 varchars)。值(value)in FOLDERID 需要根据其值解码成数字在插入新表之前

最佳答案

原因可能是对这样一条sql语句是如何执行的误解。

它首先选择所有行。然后将它们全部插入到表中。这意味着您的 exists 子句看不到相同语句之前插入的行

从查看语句来看,您可能会觉得它插入一行,然后像时尚一样循环选择下一行。事实并非如此。

关于sql - 为什么我在插入时违反了这个唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225396/

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