Van deze blogbericht
MySQL-triggers:hoe breek je een INSERT, UPDATE of DELETE af met atrigger? Op EfNet's #mysql vroeg iemand:
Hoe zorg ik ervoor dat een trigger de bewerking afbreekt als mijn bedrijfsregel faalt?
In MySQL 5.0 en 5.1 moet je je toevlucht nemen tot een of andere truc om atrigger te laten mislukken en een zinvolle foutmelding te geven. De MySQL StoredProcedure FAQ zegt dit over foutafhandeling:
SP 11. Hebben SP's een “raise”-statement om “applicatiefouten te verhogen”? Sorry, momenteel niet. De SQL-standaard SIGNAL- en RESIGNAL-instructies staan op de TODO.
Misschien zal MySQL 5.2 SIGNALstatement bevatten waardoor deze hackstolen rechtstreeks uit MySQL StoredProcedure Programming overbodig worden. Wat is de hack? Je gaat MySQL forceren om te proberen een kolom te gebruiken die niet bestaat. Lelijk? Ja. Werkt het? Zeker.
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;