Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kích hoạt MySQL nếu điều kiện tồn tại

Tôi nghĩ bạn muốn cập nhật nó trở lại OLD khi mật khẩu MỚI không được cung cấp.

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 ;

Tuy nhiên, điều này có nghĩa là người dùng không bao giờ được xóa mật khẩu.

Nếu trường mật khẩu (đã được mã hóa) đang được gửi lại trong bản cập nhật cho mySQL, thì trường đó sẽ không trống hoặc trống và MySQL sẽ cố gắng thực hiện lại hàm Password () trên đó. Để phát hiện điều này, hãy sử dụng mã này thay vì
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. Rails xác thực tính duy nhất không thành công trên các đầu vào đồng thời

  2. Kích hoạt MySQL Before Delete để tránh xóa nhiều hàng

  3. Tại sao tôi không thể hiển thị cùng một kết quả hai lần bằng cách sử dụng mysqli_fetch_assoc?

  4. Làm cách nào để tôi có thể chèn từ tiếng Ả Rập vào cơ sở dữ liệu mysql bằng java

  5. truy vấn cực kỳ chậm sau khi chuyển sang mysql 5.7