Ik denk dat je bedoelt om het terug te updaten naar de OLD
wachtwoord, wanneer de NIEUWE niet is opgegeven.
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 ;
Dit betekent echter dat een gebruiker nooit een wachtwoord kan wissen.
Als het wachtwoordveld (reeds versleuteld) wordt teruggestuurd in de update naar mySQL, dan zal het niet null of leeg zijn en zal MySQL proberen om de Password()-functie erop opnieuw uit te voeren. Om dit te detecteren, gebruikt u in plaats daarvan deze code
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 ;