获取在 Postgres UPSERT 查询期间更改的信息
Get information what has changed during Postgres UPSERT query
在 PostgreSQL 上的 UPSERT 查询期间,table 的哪些条目已更改(插入或更新)并不明显。
查询:
首先为businessKey添加唯一约束:
alter table public."test_table" add constraint "bk_constraint" unique ("businessKey");
插入 ... 发生冲突 ... 进行更新
INSERT INTO public."test_table" ("first_name","last_name","role", "businessKey")
SELECT
UNNEST(ARRAY['Jon','Anna','Bernhard']),
UNNEST(ARRAY['Doe','Miller','Hill']),
UNNEST(ARRAY['team member','team member','project lead']),
UNNEST(ARRAY['Jon JD','Anna AM','Bernhard AH'])
ON CONFLICT ("businessKey") DO UPDATE
SET "first_name"=EXCLUDED."first_name","last_name"=EXCLUDED."last_name""role"=EXCLUDED."role","businessKey"=EXCLUDED."businessKey";
现在我想知道插入或更新了哪些条目以供进一步处理。我怎样才能得到这些信息?
只需添加一条更新语句来记录此信息:
...
ON CONFLICT ("businessKey") DO UPDATE
SET is_updated = true,
"first_name"=EXCLUDED."first_name",
"last_name"=EXCLUDED."last_name"...
在 PostgreSQL 上的 UPSERT 查询期间,table 的哪些条目已更改(插入或更新)并不明显。
查询:
首先为businessKey添加唯一约束:
alter table public."test_table" add constraint "bk_constraint" unique ("businessKey");
插入 ... 发生冲突 ... 进行更新
INSERT INTO public."test_table" ("first_name","last_name","role", "businessKey")
SELECT
UNNEST(ARRAY['Jon','Anna','Bernhard']),
UNNEST(ARRAY['Doe','Miller','Hill']),
UNNEST(ARRAY['team member','team member','project lead']),
UNNEST(ARRAY['Jon JD','Anna AM','Bernhard AH'])
ON CONFLICT ("businessKey") DO UPDATE
SET "first_name"=EXCLUDED."first_name","last_name"=EXCLUDED."last_name""role"=EXCLUDED."role","businessKey"=EXCLUDED."businessKey";
现在我想知道插入或更新了哪些条目以供进一步处理。我怎样才能得到这些信息?
只需添加一条更新语句来记录此信息:
...
ON CONFLICT ("businessKey") DO UPDATE
SET is_updated = true,
"first_name"=EXCLUDED."first_name",
"last_name"=EXCLUDED."last_name"...