Postgres:如何在更新期间设置检查约束?

时间:2015-07-07 16:46:12

标签: sql postgresql check-constraints

设置值约束的一种方法是使用数据库检查约束:

balance integer CHECK (balance > 0)

是否可以在更新期间声明约束,例如:

UPDATE xx SET balance = balance + 1000 WHERE user_id=$1 CHECK balance > $2

并且能够在一个查询中执行此操作。

1 个答案:

答案 0 :(得分:0)

您可以添加hack assert。对于SQL Server,这将是:

UPDATE xx
SET balance = balance + 1000
WHERE user_id=$1
 AND IIF((balance + 1000) > $2, 0, 0/0) = 0

如果出现问题,这会导致零除错误。这是一个很大的黑客攻击,但它可以用作内联断言。