mysql中不同表上的多个更新(存储过的Pocedure)

时间:2016-01-18 18:17:15

标签: mysql stored-procedures sql-update

我试图在MYSQL中的存储过程中对不同的表进行多次更新。但是,如果其中一个更新未找到ID,则会发出警告或错误。

所以我想使用IF ELSE,但我不知道如何制作它。

这是存储过程中代码的示例

be is an entrie parameter.
       update table1 set status = 2 where id_be = be;
       update table2 set status = 2 where id_be = be; 
       update table3 set status = 2 where id_be = be;
       update table4 set status = 2 where id_be = be;
       update table5 set status = 2 where id_be = be;
       update table6 set status = 2 where id_be = be;
       update table7 set status = 2 where id_be = be;
       update table8 set status = 2 where id_be = be;
       update table9 set status = 2 where id_be = be;

所以,如果第一次更新成功或者为真,我需要保留de存储过程,如果没有,则继续执行另一次更新。

我希望你能帮助我。感谢!!!

1 个答案:

答案 0 :(得分:0)

因此适用于5个表格。你可以扩展它。

DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `setup`(IN be CHAR(200))
BEGIN
DECLARE countRow INT;

  UPDATE table1 SET STATUS=2 WHERE id_be = be;

  SET countRow = ROW_COUNT();
  IF(countRow =  0) THEN
    UPDATE table2 SET STATUS=2 WHERE id_be = be;
  END IF;

  SET countRow = ROW_COUNT();
  IF(countRow =  0) THEN
    UPDATE table3 SET STATUS=2 WHERE id_be = be;
  END IF;

  SET countRow = ROW_COUNT();
  IF(countRow =  0) THEN
    UPDATE table4 SET STATUS=2 WHERE id_be = be;
  END IF;

  SET countRow = ROW_COUNT();
  IF(countRow =  0) THEN
    UPDATE table5 SET STATUS=2 WHERE id_be = be;
  END IF;

 END;;
DELIMITER ;

致电:

CALL setup('xx');