Saya pikir Anda bermaksud memperbaruinya kembali ke OLD
kata sandi, ketika yang BARU tidak diberikan.
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 ;
Namun, ini berarti pengguna tidak akan pernah bisa mengosongkan kata sandi.
Jika bidang kata sandi (sudah dienkripsi) dikirim kembali dalam pembaruan ke mySQL, maka itu tidak akan nol atau kosong, dan MySQL akan mencoba untuk mengulang fungsi Kata Sandi() di dalamnya. Untuk mendeteksi ini, gunakan kode ini sebagai gantinya
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 ;