仅当大于最小值时才减少 postgres 中的整数

Nie*_*ian 6 postgresql

我有一个这样的语句,我用来递减一个计数器:

UPDATE stats SET counter = counter - 1 WHERE id = 24235;
Run Code Online (Sandbox Code Playgroud)

问题是,我从不希望计数器低于1。如何执行更新语句,该语句只会递减直到1

PG 9.3 版

Sch*_*ern 8

UPDATE stats
SET counter = counter - 1
WHERE id = 24235
  AND counter > 1;
Run Code Online (Sandbox Code Playgroud)

如果递减量不同,则必须确保在两个地方传递相同的值。

UPDATE stats
SET counter = counter - ?
WHERE id = ?
  AND counter > ?;
Run Code Online (Sandbox Code Playgroud)

你会用一些伪代码调用它 sql.execute(decrement, id, decrement)

如果计数器永远不会低于 1,我会在该字段上添加一个约束。 counter INTEGER CHECK (counter > 0)