存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `Sample`(IN itemId INT, IN itemQnty
DOUBLE, IN invID INT)
BEGIN
DECLARE crntQnty DOUBLE;
DECLARE nwQnty DOUBLE;
SET crntQnty=(SELECT `QuantityOnHand` FROM `item` WHERE id=itemId);
SET nwQnty=itemQnty+crntQnty;
UPDATE `item` SET `QuantityOnHand`=nwQnty WHERE `Id`=itemId;
UPDATE `inventoryentry` SET `Status` = 1 WHERE `InventoryID`=invID AND
`ItemID`=itemId;
END$$
在这个存储过程中,我有两个更新语句。如果第一次更新成功执行,则第二次执行需要做出哪些改变?
答案 0 :(得分:2)
在第一个UPDATE
之后,您可以检查受ROW_COUNT()
影响的行数。
如果ROW_COUNT()
返回所需的更新数量(可能> 0),则只触发第二个UPDATE
。
Yo可以UPDATE
围绕第二个IF - END IF
检查受影响的行数。
答案 1 :(得分:0)
使用SELECT ROW_COUNT();
确定是否有任何行受到影响。如果计数大于零,或等于预期的行数,则更新成功。