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 ?
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 :
CREATE TRIGGER
initie la création d'un nouveau déclencheur nommé check_birthdate
. BEFORE INSERT
spécifie que le déclencheur doit être exécuté avant l'opération d'insertion. 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. 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. 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!