Jeg tror, du mener at opdatere den tilbage til den OLD
adgangskode, når den NYE ikke medfølger.
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 ;
Dette betyder dog, at en bruger aldrig kan slette en adgangskode.
Hvis adgangskodefeltet (allerede krypteret) sendes tilbage i opdateringen til mySQL, vil det ikke være null eller tomt, og MySQL vil forsøge at gentage Password()-funktionen på det. For at opdage dette skal du bruge denne kode i stedet
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 ;