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

NẾU KHÔNG TỒN TẠI trong trình kích hoạt

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 ;

Tôi không sử dụng not exists , chỉ cần kiểm tra xem số kết quả phù hợp lớn hơn 0

mã của bạn chạy tốt trên máy của tôi, phiên bản MySQL của bạn là gì?

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. Làm thế nào để có được sự khác biệt giữa các hàng liên tiếp trong MySQL?

  2. Python:ValueError:ký tự định dạng không được hỗ trợ '' '(0x27) tại chỉ mục 1

  3. Cách tốt nhất để di chuyển DB Django từ SQLite sang MySQL là gì?

  4. Chỉ chọn bản ghi nếu bản ghi trước nó có giá trị thấp hơn

  5. MySQL CHAR () so với T-SQL CHAR ():Sự khác biệt là gì?