Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pemicu MySQL jika kondisi ada

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 ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara saya terhubung ke Database MySQL dengan Python?

  2. menjebak peringatan MySql

  3. MySQL ERROR 1290 (HY000) --secure-file-priv option

  4. Bagaimana saya bisa mengubah ukuran kolom dalam tabel MySQL?

  5. Menjalankan prosedur tersimpan dengan kursor di PHP