Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо и къде да използваме ИНДЕКС - плюсове и минуси

  2. Има ли по-прост начин да намерите MODE(S) на някои стойности в MySQL

  3. Грешка в MySQL 1264:стойност извън диапазона за колона

  4. Как да сравним само дата и година в php codeigniter

  5. Заявка за получаване на всички редове от предходния месец