我有一个简单的表,我需要插入数组中的值,但只有表中不存在的值,并从查询中返回插入的值,我该怎么做?我有下一个查询,但它只是插入值:
INSERT INTO my_table(id, card_id, size)
VALUES ${myArray.map(item => `($${addDbValue(item.id, dbValues)},
$${dbValues.push(item.card_id)}::int, '24')`)}
`, dbValues)
唯一的是card_id
您似乎想要on conflict
和returning
:
insert into my_table(id, card_id, size)
values (?, ?, ?)
on conflict (card_id) do nothing
returning *
查询插入新行,并返回整行(包括最初未指定插入的列(。如果已经存在具有相同card_id
的行,则不执行插入(要使其工作,需要对card_id
使用唯一索引或约束(。
请注意,您应该使用查询参数(如上所示(,而不是在查询字符串中串联变量。看看您的客户端的参数化查询功能。