gpt4 book ai didi

postgresql - 错误 : duplicate key value violates unique constraint in postgreSQL

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

我在更新表时遇到 postgresql 中的唯一约束问题。我有一个包含 3 列的表和对其中一列(internal_state)的唯一约束。该表将只有两列,internal_state 的值为 1,0。更新查询是

UPDATE backfeed_state SET internal_state = internal_state - 1<br/>
WHERE EXISTS (SELECT 1 FROM backfeed_state d2 WHERE d2.internal_state = 1 )

在 MSSqlserver 中运行此查询没问题,但在 postgre 中它会抛出唯一约束错误。我的理解是在更新所有行后在 SQLServer 中只检查列上的约束但在更新每一行后在 postgre 中检查约束。所以在更新第一行之后(internal_state 值从 1 到 0)postgre 正在检查约束并在更新第二行之前抛出错误。

有没有办法避免这种情况?

最佳答案

http://www.postgresql.org/docs/9.0/static/sql-createtable.html在“非延迟唯一性约束”部分 - “当 UNIQUE 或 PRIMARY KEY 约束不可延迟时,PostgreSQL 会在插入或修改行时立即检查唯一性。”

将唯一约束更改为可延迟将推迟检查直到更新结束。要么使用 SET CONSTRAINTS 在 session 级别禁用(这是烦人的重复),要么使用可延迟选项删除并重新创建唯一性约束(我不知道 ALTER 构造可以在不删除的情况下执行此操作)。

关于postgresql - 错误 : duplicate key value violates unique constraint in postgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651341/

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