Maison > base de données > tutoriel mysql > Comment empêcher les insertions ou les mises à jour avec des données invalides à l'aide de déclencheurs dans MySQL ?

Comment empêcher les insertions ou les mises à jour avec des données invalides à l'aide de déclencheurs dans MySQL ?

Susan Sarandon
Libérer: 2024-11-21 21:42:12
original
221 Les gens l'ont consulté

How to Prevent Inserts or Updates with Invalid Data Using Triggers in MySQL?

Prévenir les insertions ou les mises à jour avec des déclencheurs dans MySQL

Lorsqu'il s'agit de contraintes de vérification, MySQL peut parfois les ignorer. Cela soulève la question de savoir comment utiliser efficacement les déclencheurs pour contrôler les insertions et les mises à jour dans de tels cas. Par exemple, une table nommée "foo" a un attribut "agency" qui ne peut accepter que des valeurs comprises entre 1 et 5.

Initialement, un déclencheur a été créé pour empêcher que des valeurs en dehors de cette plage soient insérées dans la table :

create trigger agency_check
before insert on foo
for each row
begin
    if (new.agency < 1 or new.agency > 5) then
        #Do nothing?
    end if;
end
Copier après la connexion

Cependant, le déclencheur n'arrête pas explicitement l'insertion ou la mise à jour de lignes avec des valeurs d'agence non valides. Pour implémenter un tel comportement, envisagez d'utiliser 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 = 'your error message';
    end if
end
Copier après la connexion

Ce déclencheur modifié générera désormais une erreur avec le message spécifié, garantissant que l'insertion ou la mise à jour échoue lorsque les valeurs de l'agence se situent en dehors de la plage prédéfinie. Cette approche fournit une méthode plus robuste pour appliquer des contraintes de vérification dans MySQL.

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