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
Susan Sarandonoriginal
2024-11-21 21:42:12229parcourir

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

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

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!

Déclaration:
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