Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment annuler l'opération INSERT dans le déclencheur MySql ?

Je suis tombé sur cela et bien que la solution fonctionne, je suis ensuite tombé sur ce qui me semble être une meilleure solution. Je soupçonne que ce n'était pas une option lorsque cette question a été initialement répondue.

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

Cela va maintenant renvoyer un message d'erreur agréable (ou diabolique !) que vous pouvez intercepter. Pour plus d'informations à ce sujet, consultez :http://dev.mysql.com/doc/refman/5.5/en/signal.html

J'espère que cela aidera quelqu'un d'autre !