我有以下查询:
INSERT INTO ReservationCounter (student_id, reservation_count) VALUES (1, 1)
ON CONFLICT (student_id) DO
UPDATE SET reservation_count=excluded.reservation_count+1;
当没有冲突时它INSERTS
成功。
但是,当发生冲突时,该UPDATE
语句实际上并没有用增量更新值。
当我第一次在冲突中运行它时,它按预期返回 2,但是当我再次运行它时,我希望它从 2 增加到 3(因为reservation_count=excluded.reservation_count+1
)。它不这样做,它再次返回 2;让我相信那reservation_count
永远是1。
我究竟做错了什么?
您正在将 reservation_count 设置为插入的值 + 1,而不是增加当前值。
您可能希望将提供的计数添加到现有计数中。