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,另一行用于 userid 0。我不明白为什么!
这就是我调用存储过程的方式 - 调用 GET_USER_PNTS(1, 1, 1)
请告诉我为什么 user_id 0 也得到更新。
附言 1. 我正在使用 MariaDB。 2. UserID 0 是我在表中手动添加的。实际上不会有任何 0 user_id。但即便如此,该行也不应该更新。
最佳答案
请重命名您的参数:
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
被视为 true。
关于mysql - 存储过程更新两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45907093/