Tôi nghĩ bạn muốn cập nhật nó trở lại OLD
khi mật khẩu MỚI không được cung cấp.
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 ;
Tuy nhiên, điều này có nghĩa là người dùng không bao giờ được xóa mật khẩu.
Nếu trường mật khẩu (đã được mã hóa) đang được gửi lại trong bản cập nhật cho mySQL, thì trường đó sẽ không trống hoặc trống và MySQL sẽ cố gắng thực hiện lại hàm Password () trên đó. Để phát hiện điều này, hãy sử dụng mã này thay vì
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 ;