从MySQL数据库中减去数量而不得到负数

本文关键字:数据库 MySQL | 更新日期: 2023-09-27 18:18:01

我正在编写一个c#应用程序,每次出版一本特定的书时,数据库中的数量减少1。这个数量一直在减,直到最后得到一个负值作为书的数量。

我想知道如何减去书的数量而不达到负值。

代码如下:

connect = new SqlConnection(conStr.connectString);
connect.Open();
string updateString = "update tblbooks set quantity=quantity - 1 where book_id=@book_id";
cmd = new SqlCommand(updateString, connect);

从MySQL数据库中减去数量而不得到负数

只使用casegreatest():

update tblbooks
    set quantity = greatest(quantity - 1, 0)
    where book_id = @book_id;

或者,更好的是,在where中使用一个条件:

update tblbooks
    set quantity = quantity - 1
    where book_id = @book_id and quantity >= 1;

使用where类来确保您只更新那些具有quantity > 0的记录

update tblbooks 
set quantity=quantity - 1 
where quantity>0 and book_id=@book_id