Maison > Article > base de données > Les déclencheurs MySQL peuvent-ils directement provoquer des échecs INSERT ?
Est-il possible d'échouer les INSERT à l'aide de déclencheurs ?
Dans MySQL, les déclencheurs ont la possibilité de modifier les données avant les insertions et les mises à jour. Cependant, il a été observé que ces déclencheurs sont incapables de provoquer directement l'échec de l'opération d'insertion ou de mise à jour correspondante, laissant place à des problèmes de validation.
Cette limitation provient de l'absence d'un mécanisme spécifique de gestion des exceptions dans MySQL. déclencheurs. Bien que la norme SQL définisse les instructions SIGNAL et RESIGNAL pour la gestion des erreurs, elles ne sont pas encore implémentées dans MySQL.
Cependant, une solution de contournement a été développée pour émuler cette fonctionnalité en tentant d'utiliser de force une colonne inexistante dans le déclenchement. Cela déclenche une erreur dans MySQL, qui peut être utilisée pour indiquer un échec d'opération. Le code suivant illustre cette technique :
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;
Ce déclencheur évaluera la colonne important_value et effectuera les calculs nécessaires. Si la condition n'est pas remplie, il tentera de sélectionner des données dans une colonne inexistante, déclenchant une erreur et provoquant l'échec de l'opération d'insertion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!