我会尝试在Postgres中运行“upsert”,类似于:
INSERT INTO my_table (
id, -- unique key
name,
hash
) VALUES (
'4b544dea-b355-463c-8fba-40c36ac7cb0c',
'example',
'0x0123456789'
) ON CONFLICT (
id
) DO UPDATE SET
name = 'example',
hash = '0x0123456789'
RETURNING
OLD.hash;
我希望能够返回hash
列的先前值(上面的示例由于OLD
不是有效的表别名而无效)。重要的是,我正在尝试找到一种在负载下不会引起冲突的方法。这是否可能?还是唯一的解决方案是在事务中进行读取操作后再进行写入操作?
ON CONFLICT
),则RETURNING
块将失败,因为记录以前不存在。 - tedtanner