mysql存储过程的参数名不能和表字段名一样,否则不执行条件
例子:
DELIMITER $$
DROP PROCEDURE IF EXISTS `barter`.`sp_updateleagfood`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_updateleagfood`(leagId int , foodNo varchar(4))
BEGIN
START TRANSACTION;
Update leagfoods set drawamount = drawamount + deal where LeagId = leagId and FoodNo = foodNo;
COMMIT;
END$$
DELIMITER ;
结果:
整个表的记录都执行更新
改进:
DELIMITER $$
DROP PROCEDURE IF EXISTS `barter`.`sp_updateleagfood`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_updateleagfood`(pId int , pNo varchar(4))
本文介绍了一个关于MySQL存储过程中参数名与表字段名相同导致的问题案例。当存储过程参数名与表中字段名一致时,可能导致更新操作影响到所有记录而非预期的特定记录。文章提供了错误示例及修改后的正确做法。
343

被折叠的 条评论
为什么被折叠?



