我有一个这样的声明,我用来减少一个计数器:

UPDATE stats SET counter = counter - 1 WHERE id = 24235;
问题是,我从不希望计数器低于1。我如何执行一条只会递减直到1的更新语句?
PG版本9.3

最佳答案

UPDATE stats
SET counter = counter - 1
WHERE id = 24235
  AND counter > 1;

如果递减量有所不同,则必须确保在两个地方都传递相同的值。
UPDATE stats
SET counter = counter - ?
WHERE id = ?
  AND counter > ?;

您会使用诸如sql.execute(decrement, id, decrement)之类的伪代码调用该代码

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

关于postgresql - 仅当大于最小值时,才减少postgres中的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28031247/

10-15 22:33