使用PostgresSQL数据库对knex.js batchInsert进行操作

时间:2019-04-26 01:00:53

标签: postgresql knex.js

我正在尝试使用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 }
]

0 个答案:

没有答案