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
:
<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!