Javascript 使用pg promise helpers进行多行插入/更新时插入冲突DO更新
我正在尝试使用pg PROMITE将多行插入pgsql数据库。在我的例子中,表中可能已经存在一些我试图插入的记录。在这种情况下,我需要更新它们。通过浏览,我发现可以使用插入或更新多行。除了多个插入/更新之外,是否有其他方法可以执行以下操作Javascript 使用pg promise helpers进行多行插入/更新时插入冲突DO更新,javascript,sql,node.js,pg-promise,Javascript,Sql,Node.js,Pg Promise,我正在尝试使用pg PROMITE将多行插入pgsql数据库。在我的例子中,表中可能已经存在一些我试图插入的记录。在这种情况下,我需要更新它们。通过浏览,我发现可以使用插入或更新多行。除了多个插入/更新之外,是否有其他方法可以执行以下操作 INSERT INTO table_name(column_list) VALUES(value_list) ON CONFLICT target action; 在某处创建静态变量: const cs=new pgp.helpers.ColumnSet(
INSERT INTO table_name(column_list)
VALUES(value_list)
ON CONFLICT target action;
在某处创建静态变量:
const cs=new pgp.helpers.ColumnSet(['first','second','third','fourth'],
{表:'我的表'});
//假设列“first”和“second”存在冲突:
const onConflict='ON CONFLICT(第一,第二)DO UPDATE SET'+
assignColumns({from:'EXCLUDED',skip:['first','second']});
- 见和
数据是有效对象的数组:
const upsert=pgp.helpers.insert(数据,cs)+onConflict;//向上插入
等待数据库无(向上插入);//执行查询:
额外费用
如果希望所有SQL都以大写而不是小写生成,可以设置选项capSQL
:
const pgp=require('pg-promise')({
capSQL:对
});
查看生成和执行内容的最佳方法是借助于。是的,只需使用帮助程序创建插入值查询,然后将冲突上的作为字符串添加。
。@Bergi是的,非常好。不管怎样,我添加了我的答案,可能会有更多帮助:)@vitaly-t是的,但我不知道它到底会是什么样子,我也不知道assignColumns
!