Maison > base de données > tutoriel mysql > Pourquoi mes contraintes MySQL CHECK ne fonctionnent-elles pas ?

Pourquoi mes contraintes MySQL CHECK ne fonctionnent-elles pas ?

Mary-Kate Olsen
Libérer: 2025-01-10 11:20:45
original
613 Les gens l'ont consulté

Why Aren't My MySQL CHECK Constraints Working?

Comprendre le comportement des contraintes CHECK dans MySQL

La gestion par MySQL des contraintes CHECK peut parfois être inattendue. Une contrainte CHECK peut sembler inactive, même si elle est correctement définie. La clé est de comprendre la compatibilité des versions de MySQL.

MySQL 8.0.16 a été la première version à prendre entièrement en charge les contraintes CHECK. Si votre version de MySQL est antérieure à 8.0.16, la clause CHECK sera analysée mais ignorée par tous les moteurs de stockage. Les données violant la contrainte seront insérées sans erreur.

Consultez le manuel de référence officiel de MySQL (https://www.php.cn/link/e6c19a87ef9e816e02ce247d4f41d38a) pour confirmer les capacités de votre version MySQL.

Alternatives aux contraintes CHECK (pour les anciennes versions de MySQL) :

Si votre version MySQL ne prend pas en charge la contrainte CHECK, envisagez d'utiliser des déclencheurs. Les déclencheurs exécutent du code personnalisé en réponse à des événements de base de données tels que l'insertion de lignes. Un déclencheur peut valider les données avant l'insertion, garantissant ainsi l'intégrité des données.

Par exemple, un déclencheur pour appliquer une valeur non négative pour le champ SD dans une table Customer pourrait être :

<code class="language-sql">DELIMITER //
CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer
FOR EACH ROW
BEGIN
  IF NEW.SD < 0 THEN
    SET NEW.SD = 0;
  END IF;
END //
DELIMITER ;</code>
Copier après la connexion

Ce déclencheur intercepte les INSERT déclarations sur la table Customer. Si SD est négatif, le déclencheur le met à zéro. Cela fournit une fonctionnalité similaire à une contrainte CHECK.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal