sql >> Database teknologi >  >> RDS >> Mysql

MySQL-udløser, hvis betingelsen eksisterer

Jeg tror, ​​du mener at opdatere den tilbage til den OLD adgangskode, når den NYE ikke medfølger.

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 ;

Dette betyder dog, at en bruger aldrig kan slette en adgangskode.

Hvis adgangskodefeltet (allerede krypteret) sendes tilbage i opdateringen til mySQL, vil det ikke være null eller tomt, og MySQL vil forsøge at gentage Password()-funktionen på det. For at opdage dette skal du bruge denne kode i stedet
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. PDO henter en kolonne fra tabel til 1-dimensionel array

  2. Sådan ændres standarddatabasens mailprofil for en bruger i SQL Server (T-SQL)

  3. Opdater MySQL med if condition

  4. Hvordan Substr() virker i SQLite