От този публикация в блог
MySQL тригери:Как да прекъснете INSERT, UPDATE или DELETE с atrigger? В #mysql на EfNet някой попита:
Как да накарам задействане да прекъсне операцията, ако бизнес правилото ми не успее?
В MySQL 5.0 и 5.1 трябва да прибягвате до някаква измама, за да накарате атригера да се провали и да изпрати смислено съобщение за грешка. Често задаваните въпроси за MySQL StoredProcedure казват това за обработката на грешки:
SP 11. Имат ли SP оператори „повдигане“ за „повдигане на грешки в приложението“? Съжалявам, не в момента. Стандартните SQL оператори SIGNAL и RESIGNAL са в TODO.
Може би MySQL 5.2 ще включва SIGNALstatement, което ще направи това, откраднато направо от MySQL StoredProcedure Programming, остаряло. Какъв е хакът? Ще принудите MySQL да се опита да използва колона, която не съществува. грозен? да. Работи ли? Разбира се.
CREATE TRIGGER mytabletriggerexample BEFORE INSERT FOR EACH ROW BEGIN IF(NEW.important_value) < (fancy * dancy * calculation) THEN DECLARE dummy INT; SELECT Your meaningful error message goes here INTO dummy FROM mytable WHERE mytable.id=new.id END IF; END;