【发布时间】:2016-07-27 13:07:18
【问题描述】:
我正在考虑使用 PostgreSQL INSERT .. ON CONFLICT UPDATE 功能。理想情况下,我将能够区分成功插入哪些行以及更新了哪些行。有办法吗?
【问题讨论】:
-
你需要一个额外的辅助列。
-
使用这样的功能我看不到获得这些信息的方法,正如 Klin 所说,你需要一个列来存储发生的操作,即使这样你也需要另一件事来知道具体操作(因为它可以同时发生许多事情)。我能看到的最好的方法是有一个带有审计表的触发器。触发器将审核插入和更新,但即使使用触发器,您也需要一些东西来识别该操作以区别于以前的操作
-
插入命令有一个
RETURNING子句,但我不知道它是否具有区分插入和更新的能力。在这里查看:Insert
标签: sql postgresql upsert