我有这样的陈述,我用来递减一个柜台:
UPDATE stats SET counter = counter - 1 WHERE id = 24235;
问题是,我新手希望计数器低于1
。如何执行更新语句,只会递减到1
?
PG版本9.3
答案 0 :(得分: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)
答案 1 :(得分:3)
另一种方式......
UPDATE stats SET counter = (
CASE WHEN counter > 1
THEN (counter - 1)
ELSE 1 END
) WHERE id = 24235;