我有一个这样的声明,我用来减少一个计数器:
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/