我在PostgreSQL 9.5中有以下UPSERT:
INSERT INTO chats ("user", "contact", "name")
VALUES ($1, $2, $3),
($2, $1, NULL)
ON CONFLICT("user", "contact") DO NOTHING
RETURNING id;
Run Code Online (Sandbox Code Playgroud)
如果没有冲突,则返回如下内容:
----------
| id |
----------
1 | 50 |
----------
2 | 51 |
----------
Run Code Online (Sandbox Code Playgroud)
但如果存在冲突,则不会返回任何行:
----------
| id |
----------
Run Code Online (Sandbox Code Playgroud)
id如果没有冲突,我想返回新列,或者返回id冲突列的现有列.
可以这样做吗?如果是这样,怎么样?
我必须将大量数据从文件转储到表PostgreSQL.我知道它不支持'忽略''替换'等在MySql中完成.几乎所有与网络相关的帖子都提出了相同的建议,例如将数据转储到临时表,然后执行"插入...选择......不存在......".
在一种情况下,这将无济于事,其中文件数据本身包含重复的主键.任何机构都知道如何在PostgreSQL中处理这个问题?
PS我是从java程序做的,如果有帮助的话