Maison >base de données >tutoriel mysql >Comment empêcher les futures insertions de dates de naissance dans MySQL à l'aide d'un déclencheur ?

Comment empêcher les futures insertions de dates de naissance dans MySQL à l'aide d'un déclencheur ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-16 18:34:15591parcourir

How to Prevent Future Birthdate Inserts in MySQL Using a Trigger?

Empêcher l'insertion de futurs anniversaires à l'aide de déclencheurs MySQL

Question :

Créez un déclencheur MySQL qui désactive l'insertion de colonnes d'anniversaire dans les lignes futures.

Réponse :

Pour empêcher l'insertion lorsque la colonne anniversaire dépasse la date actuelle :

<code class="language-sql">CREATE TRIGGER check_birthdate
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE() THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future';
  END IF;
END;</code>

Instructions :

    L'instruction
  • CREATE TRIGGER initie la création d'un nouveau déclencheur nommé check_birthdate.
  • La clause
  • BEFORE INSERT spécifie que le déclencheur doit être exécuté avant l'opération d'insertion.
  • La clause
  • ON table précise la table à laquelle le déclencheur sera appliqué.
  • FOR EACH ROW indique que le déclencheur doit être exécuté pour chaque ligne.
  • L'instruction
  • IF vérifie si la valeur du champ NEW.birthdate (la valeur de la colonne dans la ligne insérée) est supérieure à CURRENT_DATE(). Si c'est le cas, le déclencheur passe à l'étape suivante.
  • L'instruction
  • SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future' déclenche une exception SQL avec le statut SQL « 45000 » (une condition d'exception définie par l'utilisateur indiquant une violation de contrainte). Cela annulera l'opération d'insertion en cours et fournira un message d'erreur plus clair. L'instruction améliorée inclut SET MESSAGE_TEXT, ce qui rend les messages d'erreur plus faciles à comprendre et à déboguer.

Cette réponse révisée fournit un message d'erreur plus informatif, améliorant ainsi la convivialité.

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