Mysql
 sql >> Database >  >> RDS >> Mysql

Come interrompere l'operazione INSERT nel trigger di MySql?

Mi sono imbattuto in questo e sebbene la soluzione funzioni, in seguito mi sono imbattuto in quella che mi sembra una soluzione migliore. Sospetto che questa non fosse un'opzione quando questa domanda è stata originariamente risolta.

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

Questo ora restituirà un messaggio di errore carino (o malvagio!) che puoi intercettare. Per maggiori informazioni su questo vedere:http://dev.mysql.com/doc/refman/5.5/en/signal.html

Spero che questo aiuti qualcun altro!