sql >> データベース >  >> RDS >> Mysql

条件が存在する場合のMySQLトリガー

    OLDに戻すつもりだと思います 新しいパスワードが提供されていない場合のパスワード。

    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 ;
    

    ただし、これは、ユーザーがパスワードを空白にすることはできないことを意味します。

    パスワードフィールド(すでに暗号化されている)がmySQLの更新で返送される場合、それはnullまたは空白にはならず、MySQLはそのフィールドでPassword()関数をやり直そうとします。これを検出するには、代わりにこのコードを使用します
    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. CodeIgniter-期待どおりに機能しないことにより、順序でグループ化します

    2. SQLServerインデックスの断片化情報をプロアクティブに収集する方法

    3. PostgreSQLIFステートメント

    4. SQLDevのLongOpsWatcher