PostgreSQL 9.2 - 条件插入因重复键违规而失败

PostgreSQL 9.2 - Conditional insert fails with duplicate key violation

以下条件插入仅在项目已存在时有效! (不继续尝试插入)。

如果项目不存在,我得到重复键违规(重复键违反唯一约束)! 使用 postgresql 9.2

INSERT INTO mytable (mytable_handle, title, description) 
select '1234/9876', 'Title here', 'description here' 
from mytable where not exists 
(select 1 from mytable where mytable_handle = '1234/9876')

(mytable_handle 是 pkey)

这个查询:

select '1234', 'Title here', 'description here' 
from mytable where not exists 
(select 1 from mytable where mytable_handle = '1234');

将 return 元组 '1234', 'Title here', 'description here' 一次 每个 行已经存在于 table,如果 mytable_handle值不存在。 运行 select 本身,你会亲眼看到

你想要:

select '1234', 'Title here', 'description here' 
where not exists 
(select 1 from mytable where mytable_handle = '1234');

SQLFiddle 示例:http://sqlfiddle.com/#!15/b331f/1