如果第一次更新成功执行,则执行第二次更新

时间:2012-05-31 11:38:15

标签: mysql sql stored-procedures

存储过程

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$$

在这个存储过程中,我有两个更新语句。如果第一次更新成功执行,则第二次执行需要做出哪些改变?

2 个答案:

答案 0 :(得分:2)

在第一个UPDATE之后,您可以检查受ROW_COUNT()影响的行数。

如果ROW_COUNT()返回所需的更新数量(可能> 0),则只触发第二个UPDATE

Yo可以UPDATE围绕第二个IF - END IF检查受影响的行数。

答案 1 :(得分:0)

使用SELECT ROW_COUNT();确定是否有任何行受到影响。如果计数大于零,或等于预期的行数,则更新成功。