我正在尝试使用knex.js batchInsert,当基于唯一索引发生冲突时,我希望操作是“什么都不做”。
我有一个表定义为
create table places (
name text,
color text,
number integer
);
我需要有一个唯一的索引作为名称和颜色的组合,所以我添加了
create unique index name_color on places (name,color);
我需要能够使用knex.js中的batchInsert()
函数,但是我不知道如何处理执行单个插入语句时可用的on冲突。我可以使单个插入语句像
insert into places(name, color, number)
values('bob', 'green', 1) on conflict do nothing
insert into places(name, color, number)
values('bill', 'green', 1) on conflict do nothing
insert into places(name, color, number)
values('bob', 'green', 1) on conflict do nothing
第二个鲍勃/绿色组合将不会插入数据库中。如果我向调用提供了一个对象数组,如
,这就是我希望它在使用batchInsert
时如何工作的方式
const inserts = [
{ name: 'bob', color: 'green', number: 1 },
{ name: 'bill', color: 'green', number: 2 },
{ name: 'bob', color: 'green', number: 3 }
]