如何避免 mysql 数据库中的负值


How to avoid minus values in mysql database

可能的重复项:
防止 mysql 中的值变为负数的最佳方法

伙计们,我是这里的新手,也是编程的新手。我正在研究库存控制系统。我将用一个例子来解释我的问题。认为我目前的库存是 500 销售应该从库存中减少。当我输入销售额时,如果我输入 1000 值将是 -500。我怎样才能避免这种情况?目前我是这样做的

-

-php 伪代码---

if(stock > sales)
 { stock - sales}
else
 {error}

我的数据类型是浮点型(10,2)。

我可以通过任何其他方式避免此问题吗?我不知道我的问题是否清楚。 (对不起,我的语言能力不好)

您的方法似乎很好,但您应该注意,如果多个线程可以同时对数据进行操作,则可能会出现争用条件。可以使用隔离级别设置为可序列化的事务,以确保两个线程不会同时减小该值。

您还可以将列类型设为unsigned int以确保它永远不会包含负值,但仍应显式处理此条件。

Mysql允许数字列类型为无符号,这基本上意味着它不能为负数。我找不到关于它的参考,所以请尝试通过这个。

您可以创建一个设置为 0 的 temp 变量,并在它实际为正时填充它,例如:

$res=0;
if($stock > $sales)
 $res=$stock-$sales

或者简单地:

$res = $stock > $sales ? $stock - $sales: 0

这样$res永远不会低于 0