Ich denke, Sie wollen es wieder auf den OLD
aktualisieren Passwort, wenn das NEUE nicht angegeben wird.
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 ;
Dies bedeutet jedoch, dass ein Benutzer niemals ein Passwort ausblenden kann.
Wenn das Passwortfeld (bereits verschlüsselt) bei der Aktualisierung an mySQL zurückgesendet wird, ist es nicht null oder leer, und MySQL versucht, die Password()-Funktion darauf zu wiederholen. Um dies zu erkennen, verwenden Sie stattdessen diesen 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 ;