如何制作如下所示的 typeorm 查询命令
INSERT INTO t1 (id, data, createdAt)
VALUES
(1, 'data3', '2022-01-03'),
(2, 'data3', '2022-01-02')
ON CONFLICT (id) DO UPDATE SET
data = CASE
WHEN EXCLUDED.createdAt > t1.createdAt THEN EXCLUDED.data
ELSE t1.data
END,
createdAt = CASE
WHEN EXCLUDED.createdAt > t1.createdAt THEN EXCLUDED.createdAt
ELSE t1.createdAt
END;
目标是更新插入数据,但仅当createdAt > 之前才更新,否则忽略
使用2个查询也可以做到同样的效果,但可能不是强一致性
TypeORM 还提供对原始查询的支持。如果需要,您可以使用原始查询或查询生成器。这是 docs 中的一个示例,它解决了同类问题