Выполнить второе обновление, если первое обновление выполнено успешно

Stored Procedure

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$

В этой хранимой процедуре у меня есть два оператора обновления. Если первое обновление выполнено успешно, а затем второе. какие изменения необходимо внести?

 triclosan31 мая 2012 г., 13:41
что вы имеете в виду под "выполнить успешно"? - без ошибок илиQuantityOnHand принимает новое значение?
 Both FM31 мая 2012 г., 13:44
Когда выполняется без ошибок, это означает, что за NumberOnHand принято новое значение. В конечном счете, мой фокус на количество на руке. @triclosan

Ответы на вопрос(2)

использованиеSELECT ROW_COUNT(); определить, были ли затронуты какие-либо строки. Если число больше нуля или равно ожидаемому числу строк, то обновление прошло успешно.

Решение Вопроса

После первогоUPDATE Вы можете проверить количество строк, которые были затронутыROW_COUNT().

ЕслиROW_COUNT() возвращает желаемое количество обновлений, которое вы хотите (возможно, & gt; 0), затем запускается только секундаUPDATE.

Йо может окружить второйUPDATE поIF - END IF проверка количества строк, которые были затронуты.

 Both FM31 мая 2012 г., 13:47
Когда я использую ROW_COUNT (); Хранимая процедура выдает ошибку.
 31 мая 2012 г., 13:49
Сразу после первогоUPDATE ... ; записыватьIF ROW_COUNT() > 0 THEN UPDATE ... END IF;

Ваш ответ на вопрос