Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie bricht man die INSERT-Operation im MySql-Trigger ab?

Ich bin darauf gestoßen und obwohl die Lösung funktioniert, bin ich später auf eine meiner Meinung nach bessere Lösung gestoßen. Ich vermute, dass dies keine Option war, als diese Frage ursprünglich beantwortet wurde.

CREATE TRIGGER `TestTable_SomeTrigger`
BEFORE UPDATE ON `test_table`
FOR EACH ROW
BEGIN
    DECLARE msg VARCHAR(255);
    IF (SomeTestToFail = "FAIL!") THEN
        set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    END IF;

    -- Do any other code here you may want to occur if it's all OK or leave blank it will be
    --  skipped if the above if is true
END$$

Dies wird nun eine nette (oder böse!) Fehlermeldung zurückgeben, die Sie abfangen können. Weitere Informationen dazu finden Sie unter:http://dev.mysql.com/doc/refman/5.5/de/signal.html

Ich hoffe, das hilft jemand anderem!