Les déclencheurs MySQL offrent un mécanisme puissant pour renforcer l'intégrité des données en exécutant automatiquement du code avant ou après les opérations de base de données. Cet exemple montre comment un déclencheur BEFORE INSERT
peut empêcher l'insertion de lignes avec des dates de naissance futures.
Voici un déclencheur qui bloque les INSERT si le birthdate
est dans le futur :
<code class="language-sql">CREATE TRIGGER prevent_future_birthdate BEFORE INSERT ON your_table FOR EACH ROW BEGIN IF NEW.birthdate > CURDATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'; END IF; END;</code>
Ce déclencheur signale une erreur SQLSTATE personnalisée, fournissant un message clair expliquant pourquoi l'insertion a échoué.
Une approche différente consiste à modifier les données dans le déclencheur pour violer une NOT NULL
contrainte :
<code class="language-sql">CREATE TRIGGER set_birthdate_null BEFORE INSERT ON your_table FOR EACH ROW BEGIN IF NEW.birthdate > CURDATE() THEN SET NEW.birthdate = NULL; END IF; END;</code>
Si une contrainte NOT NULL
est définie sur la colonne birthdate
, la définir sur NULL
entraînera l'échec de l'INSERT. Cette méthode est cependant moins explicite sur la raison de l’échec. N'oubliez pas de remplacer your_table
par le nom réel de votre table.
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!