更新行时,为什么会出现重复键错误?

时间:2010-06-09 00:20:00

标签: sql postgresql duplicates

我正在使用postgres,我在更新行时遇到重复键错误:

cursor.execute("UPDATE jiveuser SET userenabled = 0 WHERE userid = %s" % str(userId))
psycopg2.IntegrityError: duplicate key value violates unique constraint "jiveuser_pk"

我不明白如何更新行会导致此错误......我们非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

该错误似乎表明userenabled列正在参与jiveuser_pk主键。我的猜测是,useriduserenabled都参与了主键,并且您已经userid userenabled等于零。

答案 1 :(得分:1)

触发器。了解你的DBA在你不看的时候做了什么,触发了火灾并做了你不知道的各种随机事情,并且IT产生了重复的错误并导致你的交易失败。

答案 2 :(得分:0)

如果userenabled是键的一部分并且将其设置为0与具有相同值的另一个键冲突,则可能发生。

这里也可能有一个触发器,虽然不如简单的键碰撞。

我想完全回答我们需要查看该表的主键是什么。

答案 3 :(得分:0)

您需要知道要知道的主键的组件。尝试从命令行运行\d jiveuser_pk。我猜测该表上的PK是(userid,userenabled)或者在更新后有一些触发器正在运行。