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!