Von diesem Blogbeitrag ab
MySQL-Trigger:Wie bricht man ein INSERT, UPDATE oder DELETE mit attrigger ab? Auf #mysql von EfNet hat jemand gefragt:
Wie bringe ich einen Auslöser dazu, den Vorgang abzubrechen, wenn meine Geschäftsregel fehlschlägt?
In MySQL 5.0 und 5.1 müssen Sie auf einige Tricks zurückgreifen, damit ein Trigger fehlschlägt und eine aussagekräftige Fehlermeldung liefert. Die häufig gestellten Fragen zu MySQL StoredProcedure sagen Folgendes über die Fehlerbehandlung:
SP 11. Haben SPs eine „Raise“-Anweisung, um „Anwendungsfehler zu melden“? Entschuldigung, derzeit nicht. Die SQL-Standardanweisungen SIGNAL und RESIGNAL befinden sich in TODO.
Vielleicht wird MySQL 5.2 SIGNALstatement enthalten, wodurch dieser direkt aus der MySQL StoredProcedure Programming gestohlene Hack obsolet wird. Was ist der Hack? Sie werden MySQL zwingen, zu versuchen, eine Spalte zu verwenden, die nicht existiert. Hässlich? Ja. Funktioniert es? Sicher.
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;