您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PostgreSQL更新查询问题

PostgreSQL更新查询问题

UPDATE一个CTE中的 updated产生 。这意味着您都不会获得任何NULL价值updated.id。加入时updated,您 一无所获 ,因此也不会INSERT发生任何事情。

应该与NOT EXISTS

WITH updated AS (
   UPDATE Vote_user_table v
   SET    positive = TRUE       -- use booleann values ..
         ,negative = FALSE      -- .. instead of quoted string literals
   FROM   usuario u
   WHERE  v.review_id = 6       -- guessing origin
   AND    v.user_id = u.id
   AND    u.username ILIKE 'aaa@aaa.com'
   RETURNING v.id
   )
INSERT INTO Vote_user_table (review_id, user_id, positive, negative)
SELECT 6, u.id, TRUE, FALSE
FROM   usuario u
**WHERE NOT EXISTS (SELECT 1 FROM updated)**
AND    u.username ILIKE 'aaa@aaa.com';

请注意,在高并发负载下出现 竞争状况的 机会仍然很小。

SQLServer 2022/1/1 18:32:18 有476人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶