Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新非唯一列时的PostgreSQL重复键_Sql_Postgresql - Fatal编程技术网

更新非唯一列时的PostgreSQL重复键

更新非唯一列时的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)

我在PostgreSQL 9.3.2上运行下面的查询。有人能告诉我为什么这个查询在我不更新unique列时抛出unique违例异常吗

contents表也有两个触发器,但它只是插入和更新另一个表

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表