我有一个这样的语句,我用来递减一个计数器:
UPDATE stats SET counter = counter - 1 WHERE id = 24235;
Run Code Online (Sandbox Code Playgroud)
问题是,我从不希望计数器低于1。如何执行更新语句,该语句只会递减直到1?
PG 9.3 版
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)
| 归档时间: |
|
| 查看次数: |
3333 次 |
| 最近记录: |