OLD
に戻すつもりだと思います 新しいパスワードが提供されていない場合のパスワード。
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 ;
ただし、これは、ユーザーがパスワードを空白にすることはできないことを意味します。
パスワードフィールド(すでに暗号化されている)がmySQLの更新で返送される場合、それはnullまたは空白にはならず、MySQLはそのフィールドでPassword()関数をやり直そうとします。これを検出するには、代わりにこのコードを使用します
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 ;