Maison > base de données > tutoriel mysql > Comment puis-je empêcher les entrées de données invalides dans les tables MySQL à l'aide de déclencheurs ?

Comment puis-je empêcher les entrées de données invalides dans les tables MySQL à l'aide de déclencheurs ?

Patricia Arquette
Libérer: 2024-11-18 07:00:02
original
466 Les gens l'ont consulté

How can I Prevent Invalid Data Entries in MySQL Tables Using Triggers?

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal