存储过程更新两行

时间:2017-08-27 16:35:04

标签: mysql database stored-procedures mariadb

DELIMITER //
 CREATE OR REPLACE PROCEDURE GET_USER_PNTS(USER_ID INT , PNTS INT, QNT INT)
   BEGIN
   DECLARE x  INT DEFAULT 1;
   DECLARE TEMP_GIFT_ID INT;
   UPDATE USR_PNT_SUMM SET USD_PNTS = USD_PNTS + PNTS WHERE USER_ID = 1;
   COMMIT;
   END //
 DELIMITER ;

上面的存储过程更新了两行 - 一行用于user_id = 1,另一行用于用户ID 0.我不明白为什么!

这就是我调用存储过程的方法 - CALL GET_USER_PNTS(1,1,1)

请告诉我为什么user_id 0也会更新。

P.S 1.我正在使用MariaDB。 2. UserID 0是我在表格中手动添加的内容。在实践中,不会有任何0 user_id。但即使这样,该行也不应该更新。

1 个答案:

答案 0 :(得分:1)

请重命名您的参数:

CREATE OR REPLACE PROCEDURE GET_USER_PNTS(L_USER_ID INT , L_PNTS INT, L_QNT INT)
   BEGIN
   DECLARE x  INT DEFAULT 1;
   DECLARE TEMP_GIFT_ID INT;
   UPDATE USR_PNT_SUMM SET USD_PNTS = USD_PNTS + L_PNTS WHERE USER_ID = L_USER_ID;
   COMMIT;
   END //

可能USER_ID = USER_ID被视为真实。