更新非唯一列时的PostgreSQL重复键
我在PostgreSQL 9.3.2上运行下面的查询。有人能告诉我为什么这个查询在我不更新unique列时抛出unique违例异常吗 contents表也有两个触发器,但它只是插入和更新另一个表更新非唯一列时的PostgreSQL重复键,sql,postgresql,Sql,Postgresql,我在PostgreSQL 9.3.2上运行下面的查询。有人能告诉我为什么这个查询在我不更新unique列时抛出unique违例异常吗 contents表也有两个触发器,但它只是插入和更新另一个表 Execute command failed: ERROR: duplicate key value violates unique constraint "contents_0_uk" DETAIL: Key (hash)=(\x145806e0794729ba98f16e4e8ec723cb)
Execute command failed: ERROR: duplicate key value violates unique constraint "contents_0_uk"
DETAIL: Key (hash)=(\x145806e0794729ba98f16e4e8ec723cb) already exists.
CONTEXT: SQL statement "UPDATE contents cont
SET content = tmp.content,
primitive = tmp.primitive,
lang = ARRAY[lang_id(tmp.lang[1]), lang_id(tmp.lang[2]), lang_id(tmp.lang[3])],
percent = tmp.percent,
score = tmp.score
FROM tmp_post_bulk tmp
WHERE tmp.cid = cont.id
AND tmp.chash_matched = TRUE
AND (
cont.content != tmp.content
OR cont.primitive != tmp.primitive
OR cont.percent != tmp.percent
OR cont.score != tmp.score
OR cont.lang != ARRAY[lang_id(tmp.lang[1]), lang_id(tmp.lang[2]), lang_id(tmp.lang[3])]
)"
PL/pgSQL function content_bulk() line 53 at SQL statement
! Query is: SELECT content_bulk();
我刚发现问题和你的一样 因为此表中有重复的行(唯一列重复),所以当查询更新重复的行时,PostgreSQL抛出异常
我将手动删除重复的行。可能是
contents\u 0\u uk
约束在由触发器更新的表上?你能发布表的定义吗?contents_0_uk位于contents_0上,它是contents表的一个分区。触发器不更新内容表中的任何分区,并且更新后的表没有任何触发器。那么,请仔细检查触发器。有东西在改变你背后的散列。该列是contents
表的一部分吗?contents\u 0表继承contents表