我想要一个纯SQL查询来插入或更新多行。我开始工作之一,但是对于单排:组合更新如果不插入多行
WITH UPDATED_ITEMS as (
UPDATE table SET (columnC, columnD) = ($value3, $value4) WHERE id = $value5 returning *
)
INSERT INTO table (columnA, columnB, columnC, columnD) SELECT $value1, $value2, $value3, $value4 WHERE NOT EXISTS (SELECT * FROM updated_items)
现在我已经改变了更新条件,但不知道如何与插入做到这一点:
WITH updated_items as (
UPDATE table as m SET
columnC = c.columnC
columnD = c.columnD
from (values ($value3, $value4, $value5), ($value8, $value9, $value10)
) as c(columnC, columnD, id)
where c.id::int4 = m.id returning *
)
INSERT INTO table (columnA, columnB, columnC, columnD)
SELECT ($value1, $value2, $value3, $value4, $value5), ($value6, $value7, $value8, $value9, $value10) WHERE NOT EXISTS (SELECT * FROM updated_items)
但嵌件不起作用。任何人都请帮忙?
为什么不使用'insert on conflict'来代替? –
如果conficting column是一个序列号,我可以使用它吗? – mjarmoc