Return 从 'insert' 查询中插入值

Return inserted values from 'insert' query

我有简单的 table,我需要从数组中插入值,但只有 table 和 return 中不存在的值来自查询插入的值,如何我可以做这个? 我有下一个查询,但它只插入值:

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 conflictreturning:

insert into my_table(id, card_id, size) 
values (?, ?, ?)
on conflict (card_id) do nothing
returning *

查询插入新行,returns 整行(包括最初未指定用于插入的列)。如果已经存在具有相同 card_id 的行,则不会执行插入(为此,您需要 card_id 上的唯一索引或约束)。

请注意,您应该使用查询参数(如上所示)而不是在查询字符串中连接变量。看看你的客户端的参数化查询功能。