我有一个如下所示的表 stock_price_code
。其中,value
列具有 UNIQUE
约束。
create table stock_price_code (
id serial primary key,
value text not null,
unique (value)
);
如果value
没有匹配的记录,我想要在表格中进行INSERT
操作。 我有以下两个查询语句:
-- query 1
INSERT INTO stock_price_code (value)
SELECT 'MCD'
WHERE NOT EXISTS (SELECT * FROM stock_price_code WHERE value = 'MCD')
RETURNING id;
-- query 2
INSERT INTO stock_price_code (value) VALUES ('MCD')
ON CONFLICT (value) DO NOTHING
RETURNING id;
在Postgres 9.5之前,我使用的是查询1
。然后Postgres 9.5开始引入了INSERT ... ON CONFLICT ...
功能。如果我用查询2
替换查询1
,是否存在已知的副作用或性能问题?谢谢。