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

trình kích hoạt mysql mô phỏng các xác nhận

Chà, vấn đề là MySQL không tương đương với STOP ACTION yêu cầu. Vì vậy, về cơ bản, cách giải quyết công việc khá bẩn:

Một cách là bạn có thể vi phạm một ràng buộc bên trong trình kích hoạt để tạo ra lỗi và hủy chèn:

CREATE TABLE stop_action (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(35),
    UNIQUE KEY (id, name)
);
INSERT INTO stop_action (1, 'Assert Failure');

Sau đó, trong trình kích hoạt, chỉ cần cố gắng:

INSERT INTO stop_action (1, 'Assert Failure');

Lợi ích của việc đó là lỗi được trả về sẽ là lỗi khóa trùng lặp và văn bản sẽ bao gồm "Lỗi xác nhận".

Vì vậy, sau đó trình kích hoạt của bạn sẽ trở thành:

delimiter |

CREATE TRIGGER asser1_before BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    SELECT count(*) INTO test FROM (select count(*)
          from Video  
          where Date >= DATE_SUB(current_date(),INTERVAL  1 YEAR ) 
            && Date<=current_date()  
          group by User   
          having count(*) > 200);
    IF test != 0 THEN
        INSERT INTO stop_action (1, 'Assert Failure');
    END IF;
  END;
|

delimiter ;

Bây giờ, bạn cần thực hiện việc này trước khi UPDATE cũng như, nếu không, bạn có thể cập nhật ngày vào trạng thái không hợp lệ. Nhưng nếu không, điều đó ít nhất sẽ giúp bạn bắt đầu ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Giống như nhiều giá trị

  2. Tải xuống Excel bị kẹt 188kb

  3. cách chọn các bản ghi duy nhất ngẫu nhiên trên mỗi lần thực thi Truy vấn SQL

  4. Làm thế nào để chuyển đổi một chuỗi thành hệ thập lục phân trong MySQL - HEX ()

  5. MySQL Cần trợ giúp xác định SQL để loại bỏ các hàng không mong muốn