Z tego post na blogu
Wyzwalacze MySQL:Jak przerwać INSERT, UPDATE lub DELETE za pomocą wyzwalacza? Na #mysql EfNet ktoś zapytał:
Jak sprawić, by wyzwalacz przerwał operację, jeśli moja reguła biznesowa zawiedzie?
W MySQL 5.0 i 5.1 musisz uciec się do pewnych sztuczek, aby wywołać awarię i dostarczyć zrozumiały komunikat o błędzie. Często zadawane pytania dotyczące MySQL StoredProcedure mówią o obsłudze błędów:
SP 11. Czy dostawcy usług mają oświadczenie „podnoszenie” do „podnoszenia błędów aplikacji”? Przepraszamy, nie teraz. Standardowe instrukcje SQL SIGNAL i RESIGNAL znajdują się w TODO.
Być może MySQL 5.2 będzie zawierał SIGNALstatement, który sprawi, że ten hack skradziony prosto z MySQL StoredProcedure Programming stanie się przestarzały. Co to jest hack? Zmusisz MySQL, aby spróbował użyć kolumny, która nie istnieje. Brzydki? Tak. Czy to działa? Jasne.
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;