0
我在PostgreSQL 9.3.2上運行此查詢。任何人都可以告訴我爲什麼這個查詢波紋管拋出獨特的違規異常,而我不更新唯一列。更新非唯一列時的PostgreSQL重複鍵
內容表也有兩個觸發器,但它只是插入和更新其他表。
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();
也許'contents_0_uk'約束在觸發器更新的表上? 你可以發表表格的定義嗎? –
contents_0_uk在contents_0上,它是內容表的一個分區。觸發器不更新內容表中的任何分區,並且更新的表沒有任何觸發器。 –
那麼,仔細檢查觸發器。有些東西正在改變背後的「哈希」列。是「內容」表中的那一列的一部分嗎? –