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

トリガーに存在しない場合

    DROP TRIGGER IF EXISTS before_delete_concept_access;
    DELIMITER //
    CREATE TRIGGER before_delete_concept_access
        BEFORE DELETE ON `concept_access` FOR EACH ROW
        BEGIN
            IF (SELECT COUNT(*) FROM concept_access_log WHERE map=OLD.map 
                              AND accesstype=OLD.accesstype AND startdate=OLD.startdate AND stopdate=OLD.stopdate) = 0 THEN
                INSERT INTO concept_access_log (map, accesstype, startdate, stopdate)
                VALUES (OLD.map, OLD.accesstype, OLD.startdate, OLD.stopdate);
            END IF;
        END//
    DELIMITER ;
    

    not existsを使用していません 、一致カウントが0より大きいかどうかをテストするだけです

    あなたのコードは私のマシンでうまく動作します、あなたのMySQLバージョンは何ですか?

    mysql> select version();
    +------------+
    | version()  |
    +------------+
    | 5.1.56-log |
    +------------+
    1 row in set (0.00 sec)
    


    1. 距離パフォーマンスを備えたMYSQLGeoSearch

    2. PostgreSQLの2つのデータベース間でデータを比較するにはどうすればよいですか?

    3. SQLServer2012で機能しないT-SQLCTEマテリアライズ手法

    4. mysql.sockが見つかりません