如果更新的版本不会违反主键约束,我想更新我的 postgres 数据库中的行。如果可以,我想保持原样。
假设表有主键col1, col2, col3,如果我运行这样的查询:
UPDATE table SET (col1, col2) = ('A', 'B')
WHERE col1='D' AND col2='E';
Run Code Online (Sandbox Code Playgroud)
查询将失败,如果存在两个条目,我将收到重复键错误:
'A', 'B', 'C'
'D', 'E', 'C'
Run Code Online (Sandbox Code Playgroud)
即col3在现有行和要更新的行之间是相同的。
如果我正在INSERT使用我会使用的行,ON CONFLICT DO NOTHING但我找不到它的实现UPDATE。是否存在等价物?