sql >> Database >  >> RDS >> Mysql

MySQL-trigger als de voorwaarde bestaat

Ik denk dat je bedoelt om het terug te updaten naar de OLD wachtwoord, wanneer de NIEUWE niet is opgegeven.

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 ;

Dit betekent echter dat een gebruiker nooit een wachtwoord kan wissen.

Als het wachtwoordveld (reeds versleuteld) wordt teruggestuurd in de update naar mySQL, dan zal het niet null of leeg zijn en zal MySQL proberen om de Password()-functie erop opnieuw uit te voeren. Om dit te detecteren, gebruikt u in plaats daarvan deze code
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. Hoe Cotd() werkt in PostgreSQL

  2. In kaart brengen van on-premises beveiligingscontroles versus grote cloudproviders - versie 4.0

  3. opatchvoorwaarde

  4. Bulksgewijs gegevensbestanden invoegen in SQL Server