Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用pg promise helpers进行多行插入/更新时插入冲突DO更新_Javascript_Sql_Node.js_Pg Promise - Fatal编程技术网

Javascript 使用pg promise helpers进行多行插入/更新时插入冲突DO更新

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(

我正在尝试使用pg PROMITE将多行插入pgsql数据库。在我的例子中,表中可能已经存在一些我试图插入的记录。在这种情况下,我需要更新它们。通过浏览,我发现可以使用插入或更新多行。除了多个插入/更新之外,是否有其他方法可以执行以下操作

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