我有一个表,其中一列是主键,数据类型为citext。
许多线程将更新表,它们已正确同步。这些线程将数据写入文件(每个线程的单独文件),然后将数据转储到临时表中,该临时表也与主键具有相同的列,然后使用
更新主表update tabl1.col1 = temp1.col1, ...
where tabl1.pkcol = temp1.pkcol
然后使用
插入新数据insert into tabl1 (col1, col2, ...)
select col1, col2, ...
from temp1 where not exists (select * from temp1 where tabl1.col1 = temp1.col1)
现在我在主键列中有很多重复项。
环境详情:
操作系统:Win server 2008 r2 64位
Postgres版本9.2.4
由在同一台机器上运行的java(java 1.5)应用程序使用。
我检查了没有发生的java / postgres的任何异常停止。
删除并重新创建表后,它在相同条件下正常工作。
在什么情况下会插入这样的重复条目? 为什么数据库在插入重复值时没有抛出任何错误?
任何帮助或指示都将不胜感激。