Déclencheurs MySQL : prévenir les échecs d'INSERT
Bien que les déclencheurs MySQL permettent la modification des données avant les insertions et les mises à jour, il est généralement supposé qu'ils ne peuvent pas purement et simplement empêcher ces opérations de réussir. Cependant, certaines techniques existent pour obtenir cette fonctionnalité.
Manipulation des données pour provoquer une défaillance
Comme l'indique la question, une approche consiste à modifier les données de manière à ce que déclenche une duplication de clé primaire. Cependant, cette solution de contournement est spécifique au contexte et peut ne pas être applicable universellement.
MySQL Hack for Error Handling
MySQL avant la version 5.2 ne disposait pas d'une « exception d'augmentation » explicite. déclaration. Pour simuler un échec, un hack astucieux peut être utilisé. En tentant d'accéder à une colonne inexistante dans le déclencheur, MySQL génère une erreur et abandonne l'opération. Cette approche, bien que peu élégante, empêche efficacement les insertions de réussir.
Exemple de déclencheur
Le déclencheur suivant illustre le hack de gestion des erreurs :
CREATE TRIGGER example_trigger 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;
En tentant de sélectionner dans une colonne inexistante (factice), le déclencheur force MySQL à générer une erreur et à abandonner l'opération INSERT si une condition spécifique est remplie.
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!