Myslím, že ho chcete aktualizovat zpět na OLD
heslo, když NOVÉ není dodáno.
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 ;
To však znamená, že uživatel nikdy nemůže vymazat heslo.
Pokud je pole pro heslo (již zašifrované) odesíláno zpět v aktualizaci do mySQL, pak nebude prázdné ani prázdné a MySQL se v něm pokusí znovu provést funkci Password(). Chcete-li to zjistit, použijte místo toho tento kód
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 ;