【发布时间】:2017-01-18 14:27:17
【问题描述】:
我正在尝试找出如何在 postgres 中将正确的 upsert 插入到一个表中,该表具有一个名为“id”的自动增量主键列和一个列“name”上的唯一键。
问题是源表和目标表位于 2 台不同的机器上,所以我没有简单的方法知道目标表上的最新“id”是什么。
我现在这样做的方式是将数据从目标表导入到源表中,检查最高的“id”,更新源数据库中的表,然后将 upsert 插入到目标表中,但是如您所见,它似乎过于复杂。
我想做的一个例子是:
源表:
id status name
1 ok John
2 open Monica
目标表:
id status name
. . .
. . .
44 ok David
45 open John
upsert 的结果:
id status name
. . .
. . .
44 ok David
45 ok John
46 open Monica
由于“id”列,一个简单的 upsert 会有重复的键冲突。
【问题讨论】:
-
为什么不直接插入 (status, name) 而不是 id,所以序列会处理 id?..
标签: postgresql auto-increment upsert