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

0

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

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

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

Ваш Ответ

2   ответа
0

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

2

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

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

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

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

Похожие вопросы