为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现UPSERT(合并,插入…)关于重复更新)在PostgreSQL中?

如何实现UPSERT(合并,插入…)关于重复更新)在PostgreSQL中?

跃然一笑 2019-05-30 17:49:45
如何实现UPSERT(合并,插入…)关于重复更新)在PostgreSQL中?这里一个经常被问到的问题是如何重新插入,这就是MySQL所称的。INSERT ... ON DUPLICATE UPDATE和标准支持作为MERGE行动。考虑到PostgreSQL不直接支持它(在PG9.5之前),您如何做到这一点?考虑以下几点:CREATE TABLE testtable (     id integer PRIMARY KEY,     somedata text NOT NULL);INSERT INTO testtable (id, somedata) VALUES(1, 'fred'),(2, 'bob');现在假设您想要“插入”元组。(2, 'Joe'), (3, 'Alan'),因此新的表内容将是:(1, 'fred'),(2, 'Joe'),    -- Changed value of existing tuple(3, 'Alan')    -- Added new tuple这就是人们在讨论upsert。至关重要的是,任何方法都必须是在同一个表中存在多个事务时安全-使用显式锁定,或以其他方式抵抗由此产生的竞争条件。本主题在插入,在PostgreSQL中的重复更新?,但这是MySQL语法的替代品,而且随着时间的推移,它已经有了一些不相关的细节。我正在研究明确的答案。这些技术也适用于“如果不存在插入,否则什么也不做”,即“在重复键忽略时插入.”。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 2132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信