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

Attivare MySQL se esiste la condizione

Penso che tu intenda aggiornarlo di nuovo al OLD password, quando quella NUOVA non viene fornita.

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 ;

Tuttavia, questo significa che un utente non può mai cancellare una password.

Se il campo della password (già crittografato) viene rispedito nell'aggiornamento a MySQL, non sarà nullo o vuoto e MySQL tenterà di ripetere la funzione Password() su di esso. Per rilevarlo, usa questo codice invece
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 ;