Acho que você quer atualizá-lo de volta para o
OLD
senha, quando a NOVA não for fornecida. 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 ;
No entanto, isso significa que um usuário nunca pode deixar uma senha em branco.
Se o campo de senha (já criptografado) estiver sendo enviado de volta na atualização para o mySQL, ele não será nulo ou em branco, e o MySQL tentará refazer a função Password() nele. Para detectar isso, use este código
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 ;