問題は、MySQLにSTOP ACTION
に相当するものがないことです。 指図。したがって、基本的に、回避策はかなり汚いです:
1つの方法は、トリガー内の制約に違反してエラーをバブルし、挿入をキャンセルできることです。
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');
次に、トリガーで次のことを試してください。
INSERT INTO stop_action (1, 'Assert Failure');
その利点は、返されるエラーが重複キーエラーになり、テキストに「AssertFailure」が含まれることです。
したがって、トリガーは次のようになります。
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 ;
ここで、UPDATE
の前にこれを行う必要があります そうしないと、日付を無効な状態に更新する可能性があります。それ以外の場合は、少なくとも開始する必要があります...