Nun, das Problem ist, dass MySQL kein Äquivalent zu STOP ACTION
hat Befehl. Im Grunde genommen sind die Workarounds ziemlich schmutzig:
Eine Möglichkeit besteht darin, eine Einschränkung innerhalb des Triggers zu verletzen, um einen Fehler anzuzeigen und die Einfügung abzubrechen:
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');
Versuchen Sie dann im Trigger einfach Folgendes:
INSERT INTO stop_action (1, 'Assert Failure');
Der Vorteil davon ist, dass der zurückgegebene Fehler ein doppelter Schlüsselfehler ist und der Text "Assert Failure" enthält.
Ihr Trigger würde also zu:
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 ;
Jetzt müssten Sie dies vor UPDATE
tun andernfalls könnten Sie das Datum in einen ungültigen Zustand aktualisieren. Aber ansonsten sollte dir das zumindest den Einstieg erleichtern...