我在 PostgreSQL 中有一个简单的表,它包含三列:
- id 序列主键
- 关键变量
- 值 varchar
我已经在这里看到了这个问题:Insert, on duplicate update in PostgreSQL? 但我想知道如果它存在,如何获取 id,而不是更新。如果标准做法是始终“插入”或“如果存在则更新”,这是为什么呢?执行 SELECT (LIMIT 1) 的成本是否大于执行 UPDATE?
我有以下代码
INSERT INTO tag
("key", "value")
SELECT 'key1', 'value1'
WHERE
NOT EXISTS (
SELECT id,"key","value" FROM tag WHERE key = 'key1' AND value = 'value1'
);
从某种意义上说,如果存在它就不会插入,但我想获取 id。是否有“返回 id”子句或类似的东西,我可以在那里点击?