Bueno, el problema es que MySQL no tiene un equivalente de STOP ACTION
dominio. Básicamente, las soluciones alternativas están bastante sucias:
Una forma es que puede violar una restricción dentro del activador para generar un error y cancelar la inserció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');
Luego, en el gatillo, simplemente intente:
INSERT INTO stop_action (1, 'Assert Failure');
El beneficio de eso es que el error que se devuelve será un error de clave duplicada, y el texto incluirá "Afirmar falla".
Entonces su activador se convertiría en:
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 ;
Ahora, debe hacer esto antes de UPDATE
también, de lo contrario, podría actualizar la fecha a un estado no válido. Pero por lo demás, eso al menos debería ayudarte a empezar...