Следующая хранимая процедура MariaDB не работает должным образом, поскольку она обновляет все строки в таблице, а не только те, которые соответствуют критериям WHERE - PullRequest
1 голос
/ 29 июня 2019

Следующая хранимая процедура 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

1 Ответ

1 голос
/ 29 июня 2019
SET ClinicID=ClinicID

То есть для столбца устанавливается текущее значение этого столбца.

WHERE  DeptID=DeptID

Ну, столбец всегда равен самому себе (если он не равен NULL).

** * * * * * * * * * * * * * * * * * * * * * * * *. 1007.Один из подходов состоит в том, чтобы поставить в качестве аргумента начальное подчеркивание:
IN `_DeptID` INT,
IN `_ClinicID` INT,
...
SET ClinicID = _ClinicID
...
WHERE  DeptID = _DeptID
...