Myślę, że chcesz zaktualizować go z powrotem do OLD
hasło, gdy NOWE hasło nie jest podane.
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 ;
Oznacza to jednak, że użytkownik nigdy nie może wymazać hasła.
Jeśli pole hasła (już zaszyfrowane) jest odsyłane w aktualizacji do mySQL, to nie będzie ono puste ani puste, a MySQL spróbuje ponownie wykonać na nim funkcję Password(). Aby to wykryć, zamiast tego użyj tego kodu
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 ;