MySQL: 插入 ...如果计数 <= 库存否则不做任何事情



>我有一个仓库系统,您可以在其中插入或取出带有条形码和计数号的产品。现在我想先检查库存中是否有足够的产品,然后再执行交易。所以像这样:如果库存中有足够的产品,然后插入交易,否则不做任何事情(或显示错误(

我尝试了以下代码:

SELECT CASE WHEN 7 <= (SELECT i.count FROM inventory i WHERE barcode = '123')
THEN 
INSERT INTO transactions 
(companyid,barcode,fromlocation,tolocation,count) 
VALUES (1,'123','Warehouse','Factory',7)
END

但它说:

1. Unexpected keyword. (near "INTO" at position 88)
2. Unexpected end of CASE expression (near " " at position 87)
3. Unrecognized keyword. (near "END" at position 198)

所以显然这是错误的语法,但我到处搜索,找不到提供这种情况的 if 语句。

有人可以告诉我如何写正确的if语句吗?

我知道我可以先做一个选择语句,比较值,然后插入事务(使用 MySQL beginTransaction 并提交(,但我很确定必须有另一种方法。(当我谈论事务时,我不谈论来自MySQL的事务,而是来自我的数据库的事务(

谢谢

我还没有测试过这个,但它应该可以完成工作。

在 TSQL 中,您将具有IFIIF的分离,IIF仅在SELECT语句中使用(与您使用的CASE相同(,IF用作标准 IF(与任何其他语言一样(。在MySQL中,这两者是相同的,只需IF(或在您的示例中CASESELECT语句中(,在这种情况下,为了获得您想要的结果,以下代码应该可以工作:

DELIMITER $$
CREATE PROCEDURE test() 
BEGIN
IF 7 <= (SELECT i.count FROM inventory WHERE barcode = '123') THEN
INSERT INTO transactions 
(companyid,barcode,fromlocation,tolocation,count) 
VALUES (1,'123','Warehouse','Factory',7);
END IF;
END$$
DELIMITER ;
CALL test;    

最新更新