Eh bien, le problème est que MySQL n'a pas d'équivalent d'une STOP ACTION
commande. Donc, fondamentalement, les contournements sont assez sales :
Une façon consiste à violer une contrainte à l'intérieur du déclencheur pour générer une erreur et annuler l'insertion :
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');
Ensuite, dans le déclencheur, essayez simplement :
INSERT INTO stop_action (1, 'Assert Failure');
L'avantage de cela est que l'erreur renvoyée sera une erreur de clé en double et que le texte inclura "Assert Failure".
Alors votre déclencheur deviendrait :
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 ;
Maintenant, vous devez le faire avant UPDATE
ainsi, sinon vous pourriez mettre à jour la date dans un état invalide. Mais sinon, cela devrait au moins vous aider à démarrer...