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 ...