sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo cancelar la operación INSERTAR en el desencadenador MySql?

Encontré esto y, aunque la solución funciona, más tarde encontré lo que me parece una mejor solución. Sospecho que esta no era una opción cuando esta pregunta se respondió originalmente.

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$$

Esto ahora devolverá un mensaje de error agradable (¡o malvado!) que puede atrapar. Para obtener más información sobre esto, consulte:http://dev.mysql.com/doc/refman/5.5/en/signal.html

¡Espero que esto ayude a alguien más!