Maison >base de données >tutoriel mysql >Comment utiliser un déclencheur MySQL pour empêcher les futures insertions de dates de naissance ?

Comment utiliser un déclencheur MySQL pour empêcher les futures insertions de dates de naissance ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-16 18:41:10296parcourir

How to Use a MySQL Trigger to Prevent Future Birthdate Inserts?

Utilisez un déclencheur MySQL pour empêcher l'insertion de futures dates de naissance

MySQL permet l'utilisation de déclencheurs pour empêcher les opérations d'insertion en fonction de conditions spécifiques. Un de ces cas est d'empêcher les insertions avec des dates de naissance à l'avenir.

Pour ce faire, vous pouvez créer un déclencheur BEFORE INSERT qui vérifie la valeur de la colonne birthdate :

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    -- 如何阻止插入?
  END IF;
END;</code>

Pour annuler une opération d'insertion dans une instruction IF, vous pouvez utiliser l'instruction SIGNAL de MySQL :

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = '由于出生日期为未来日期,因此不允许插入';
  END IF;
END;</code>

Vous pouvez également modifier les données pour violer la contrainte, par exemple en définissant la valeur de la colonne birthdate sur NULL :

lorsque la date de naissance est dans le futur
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>

Puisque la colonne birthdate est définie comme NOT NULL, l'opération d'insertion sera automatiquement rejetée.

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