【发布时间】:2023-01-30 23:29:19
【问题描述】:
我正在尝试将从 sql 表中提取的数据插入到 postgres 表中,其中行可能存在也可能不存在。如果它们确实存在,我想将特定列设置为其默认值 (0)
该表是
site_notes (
job_id text primary key,
attachment_id text,
complete int default 0);
我的查询是
INSERT INTO site_notes (
job_id,
attachment_id
)
VALUES
{jobs_sql}
ON CONFLICT (job_id) DO UPDATE
SET complete = DEFAULT;
但是我收到一个错误:psycopg2.errors.CardinalityViolation:ON CONFLICT DO UPDATE 命令不能第二次影响行 提示:确保在同一命令中建议插入的行没有重复的约束值。
任何人都可以建议如何设置完全的冲突事件时的默认列?
非常感谢
【问题讨论】:
标签: postgresql upsert