Creo que quieres actualizarlo de nuevo al OLD
contraseña, cuando no se proporciona la NUEVA.
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 ;
Sin embargo, esto significa que un usuario nunca puede borrar una contraseña.
Si el campo de la contraseña (ya encriptado) se devuelve en la actualización de mySQL, entonces no será nulo ni estará en blanco, y MySQL intentará rehacer la función Password() en él. Para detectar esto, use este código en su lugar
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 ;