Stored procedures 以下MariaDB存储过程没有';t正常工作,因为它更新了表中的所有行,而不仅仅是满足WHERE条件的行

Stored procedures 以下MariaDB存储过程没有';t正常工作,因为它更新了表中的所有行,而不仅仅是满足WHERE条件的行,stored-procedures,mariadb,where-clause,Stored Procedures,Mariadb,Where Clause,以下MariaDB存储过程无法正常工作,因为它更新了表中的所有行,而不仅仅是满足WHERE条件的行。我的代码出了什么问题 CREATE DEFINER=`root`@`localhost` PROCEDURE `spupdatedepartments`( IN `DeptID` INT, IN `ClinicID` INT, IN `DeptName` VARCHAR(250), IN `Description` VARCHAR(250), IN `Rem

以下MariaDB存储过程无法正常工作,因为它更新了表中的所有行,而不仅仅是满足WHERE条件的行。我的代码出了什么问题

CREATE DEFINER=`root`@`localhost` PROCEDURE `spupdatedepartments`(
    IN `DeptID` INT,
    IN `ClinicID` INT,
    IN `DeptName` VARCHAR(250),
    IN `Description` VARCHAR(250),
    IN `Remark` VARCHAR(250)
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
    UPDATE tbdepartments SET ClinicID=ClinicID,DeptName=DeptName,Description=Description,Remark=Remark  WHERE DeptID=DeptID; 
END
即将列设置为该列的当前值

WHERE  DeptID=DeptID
嗯,一列总是等于它自己(除非它是
NULL

建议你明确哪些是要进来的,哪些是在桌子上的。在参数上加一个前导下划线是一种方法:

IN `_DeptID` INT,
IN `_ClinicID` INT,
...
SET ClinicID = _ClinicID
...
WHERE  DeptID = _DeptID

您是否可以尝试创建更简单的表并创建一个简单的表(在本例中,它将包括一个简单的表,通过简化的查询显示问题)?此外,您可能希望在将问题包含在内后,在等待答案时阅读。谢谢。我刚刚通过更改参数名解决了这个问题。它工作正常。
IN `_DeptID` INT,
IN `_ClinicID` INT,
...
SET ClinicID = _ClinicID
...
WHERE  DeptID = _DeptID