Eva*_*oll 3 postgresql terminology merge upsert
从 PostgreSQL 维基,
MERGE
通常用于合并两个表,并在 2003 SQL 标准中引入。该REPLACE
声明(一个MySQL扩展)或UPSERT序列尝试一个UPDATE
或失败时INSERT
。这类似于UPDATE
,然后对于不匹配的行,INSERT
。并发访问是否允许可能导致行丢失的修改与实现无关。
进一步的 PostgreSQLINSERT ... ON CONFLICT DO NOTHING/UPDATE
以UPSERT的形式销售,并在 9.5 中添加
那是MERGE
什么?它是如何融入这个组合的?
一般来说,
UPSERT
是建立在 INSERT
MERGE
专注于合并/同步表并提供
DELETE
支持。UPSERT
缺乏条件,例如,在 PostgreSQL 中,您可以通过代理被违反的索引来指定条件
ON CONFLICT ON CONSTRAINT countries_pkey DO NOTHING;
ON CONFLICT (country) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
但是它没有提供指定多个条件的能力,也没有提供DELETE
在任何条件下的能力,这两者都允许更丰富的规则集,使得“以最少的工作同步表”成为可能,这似乎是MERGE
.
另一方面,来自Peter Geoghegan 的帖子强调了一些差异“SQLMERGE
与 UPSERT 完全不同”
归档时间: |
|
查看次数: |
7828 次 |
最近记录: |