当前位置:  开发笔记 > 前端 > 正文

批量插入,如果在Postgres上发生冲突(批量upsert)则更新

如何解决《批量插入,如果在Postgres上发生冲突(批量upsert)则更新》经验,为你挑选了1个好方法。



1> MK Yung..:

原来一个特殊的表名为excluded包含要插入的行(虽然名字很奇怪)

insert into USERS(
    id, username, profile_picture)
select unnest(array['12345']),
    unnest(array['Peter']),
    unnest(array['someURL'])
on conflict (id) do 
update set
    username = excluded.username,
    profile_picture = excluded.profile_picture;

http://www.postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-CONFLICT

ON CONFLICT DO UPDATE中的SET和WHERE子句可以使用表的名称(或别名)访问现有行,并使用特殊排除表访问建议插入的行...


这只是9.5+,作为提醒.
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有