我目前有一个表格如下:
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)不支持检查约束,并且会在创建语句中默默地忽略它们)。
我应该依靠数据库来确保非负余额还是在我的应用程序中也这样做?