[/quote]
将这个字段加上约束,不能小于零就行,那么
update t set num = num - 50 where id=user_id;
update t set num = num - 50 where id=user_id;
这两个SQL对应的会话一个会成功,另一个会报违反该约束的错误,违反该约束的时候程序就可以返回余额已不足的提示,同时用户还可以重新查看最新账户余额。 如果按照水果给的SQL,第一没有考虑用户ID,会扣所有用户的钱,另一方面程序得去判断UPDATE到底更新了没有,说白了就是你执行语句后因为没有报错,所有根本不知道到底扣没有扣钱,得去检验语句执行结果,要不然都会成功。