Prévenir les insertions et les mises à jour avec des déclencheurs dans MySQL
Contrairement à d'autres systèmes de bases de données, MySQL n'applique pas de contraintes de vérification de manière native. Il devient donc nécessaire d’explorer des méthodes alternatives pour empêcher les données invalides d’entrer dans les tableaux. Les déclencheurs fournissent un mécanisme robuste pour résoudre ce problème.
Dans l'exemple donné, nous souhaitons limiter l'attribut d'agence dans la table foo aux valeurs 1 à 5. Une approche naïve impliquerait de créer un déclencheur qui vérifie la valeur de new.agency avant d'autoriser l'insertion ou la mise à jour. Cependant, ignorer simplement l'insertion ou la mise à jour ne suffit pas.
Une solution plus efficace consiste à utiliser la syntaxe SIGNAL. En générant une erreur (par exemple, SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message'), vous pouvez empêcher l'exécution de l'opération et fournir un message d'erreur significatif à l'utilisateur.
Voici un exemple mis à jour de le déclencheur utilisant la syntaxe SIGNAL :
create trigger agency_check before insert on foo for each row begin if (new.agency < 1 or new.agency > 5) then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Agency value must be between 1 and 5'; end if end
Ce déclencheur empêchera efficacement toute tentative d'insertion ou de mise à jour de la table foo avec une valeur d'agence invalide.
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!