參數傳入任意值都會被刪除?
3為什么3,輸入任意的id都會被刪除嗎?
DELIMITER //
CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)
BEGIN
DELETE FROM user WHERE id = id;
END
//
DELIMITER ;
CALL removeUserById(3);
3為什么3,輸入任意的id都會被刪除嗎?
DELIMITER //
CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)
BEGIN
DELETE FROM user WHERE id = id;
END
//
DELIMITER ;
CALL removeUserById(3);
2017-01-04
舉報
2017-01-04
您好!很高興回答你的問題。
現在根據你寫的代碼可以看出,不止你輸入3,刪除了所有記錄,就是你輸入任何正數(在范圍內的),都會刪除所有記錄。
因為DELETE FROM user WHERE????id=id;其中前面的id和后面的id是兩個字段,雖然我們理解是前者是記錄表中的id值,后者是存儲過程輸入的參數值,但是系統無法識別,現在相當于WHERE給的條件是所有的id均會被刪除。
正確的寫法:DELETE FROM user WHERE xxx.id=id;其中xxx指的是記錄表的名字。