类似于在一条SQL语句中插入多条记录,是否可以原子地执行多条Upsert?
e.g
insert into students ("name","age") values ("sid",23) on conflict ("name") set "age"=12;
insert into students ("name","age") values ("jack",24) on conflict ("name") set "age"=14;
insert into students ("name","age") values ("tom",20) on conflict ("name") set "age"=13;发布于 2018-01-08 22:19:16
根据以下documentation,应该可以工作:
INSERT INTO students ("name", "age") VALUES ("sid", 23), ("jack",24), ("tom",20)
ON CONFLICT ("name") DO UPDATE SET "age" = EXCLUDED.age;发布于 2018-01-08 22:11:03
是。使用begin和commit语句包围,如下所示:
begin;
insert into students ("name","age") values ("sid",23) on conflict ("name") do update set "age"=12;
insert into students ("name","age") values ("jack",24) on conflict ("name") do update set "age"=14;
insert into students ("name","age") values ("tom",20) on conflict ("name") do update set "age"=13;
commit;然后这些就构成了一个事务。一些语言驱动程序可能有不同的方法来处理begin和commit语句,所以如果您不仅仅是尝试使用psql,请在继续之前参考您的驱动程序文档。
但是在这一点上,insert和upsert没有区别。
https://stackoverflow.com/questions/48151963
复制相似问题