【发布时间】:2018-04-30 19:16:13
【问题描述】:
我目前有一张表如下:
CREATE TABLE Account (
ID int NOT NULL,
Balance int,
CHECK (Balance>=0)
);
我还有一些应用程序伪代码如下:
function updateBalance(id Int, howMuch Int) {
check howMuch is non zero (can be negative or positive)
read balance for id as bal
if bal + howMuch >= 0 update else throw error
}
我觉得读取余额和检查 >= 0 是不必要且耗时的,因为我计划使用的数据库支持检查约束(很可能是 PostgreSQL 或 H2)。某些(如 MySQL)不支持检查约束,会在 create 语句中默默地忽略它们。
我应该依靠数据库来确保非负余额还是在我的应用程序中也这样做?
【问题讨论】:
标签: sql postgresql h2 check-constraints