Мисля, че искате да го актуализирате обратно до OLD
парола, когато НОВАТА не е предоставена.
DROP TRIGGER IF EXISTS upd_user;
DELIMITER $$
CREATE TRIGGER upd_user BEFORE UPDATE ON `user`
FOR EACH ROW BEGIN
IF (NEW.password IS NULL OR NEW.password = '') THEN
SET NEW.password = OLD.password;
ELSE
SET NEW.password = Password(NEW.Password);
END IF;
END$$
DELIMITER ;
Това обаче означава, че потребителят никога не може да изтрие парола.
Ако полето за парола (вече криптирано) се изпраща обратно в актуализацията на mySQL, то няма да е нулево или празно и MySQL ще се опита да повтори функцията Password() в него. За да откриете това, използвайте вместо това този код
DELIMITER $$
CREATE TRIGGER upd_user BEFORE UPDATE ON `user`
FOR EACH ROW BEGIN
IF (NEW.password IS NULL OR NEW.password = '' OR NEW.password = OLD.password) THEN
SET NEW.password = OLD.password;
ELSE
SET NEW.password = Password(NEW.Password);
END IF;
END$$
DELIMITER ;