存储过程更新所有行而不仅仅是单行

时间:2016-01-20 10:27:26

标签: mysql stored-procedures

我有一个存储过程,由于某种原因工作,除了它正在更新表中的所有行而不限制唯一标识符 - 任何人都可以建议为什么?

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_location`(
 IN UID CHAR(17),
 IN lat FLOAT(10,6),
 IN lng FLOAT(10,6),
 IN country VARCHAR(3)
)
 BEGIN
 UPDATE location 
 SET lat = lat, lng = lng, country = country 
 WHERE UID = UID;
END

1 个答案:

答案 0 :(得分:0)

为参数使用不同的名称:

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_location`(
 IN p_UID CHAR(17),
 IN p_lat FLOAT(10,6),
 IN p_lng FLOAT(10,6),
 IN p_country VARCHAR(3)
)
 BEGIN
 UPDATE location 
 SET lat = p_lat,
     lng = p_lng,
     country = p_country 
 WHERE UID = p_UID;
END

原始WHERE UID = UID始终为真,例如1=1