c# - 获取信息在 Postgres UPSERT 查询期间发生了哪些变化
问题描述
在 PostgreSQL 上的 UPSERT 查询期间,表的哪些条目已更改(插入或更新)并不明显。
询问:
首先为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"...
推荐阅读
- dart - Dart get class property value dynamically
- python - 打印命令行脚本的调用函数
- javascript - 使用嵌套的 forEach 循环推送到数组
- php - PHP CURL DB 更新与从支付网关收到的状态
- sql - 为什么 Azure SQL 不认为下划线出现在空格和“ZZZZZ”之间?
- python - 在python3中,除非另有说明,否则类中的对象是否仅在该类中可用?
- typescript - Typescript 接口不接受带有强制键的动态对象
- python - 通过 Python 取消静音窗口
- android - Play Store 上的 Android 应用发布无法进行 API 调用
- flutter - Flutter:在构造函数中调用 setState()