Maison >base de données >tutoriel mysql >Comment fonctionnent les contraintes MySQL CHECK et comment puis-je garantir la validation des données dans les versions plus anciennes et plus récentes ?
VÉRIFIER les contraintes dans MySQL
Lorsque vous essayez d'ajouter une contrainte CHECK à une table MySQL, vous pouvez rencontrer un comportement inattendu lors de l'insertion de données qui violent la contrainte. Cet article approfondira les subtilités des contraintes CHECK dans MySQL et fournira une solution pour appliquer la validation.
Dans les versions antérieures de MySQL (jusqu'à la version 8.0.15), les contraintes CHECK étaient définies mais non appliquées. Comme indiqué dans le manuel de référence MySQL : "La clause CHECK est analysée par tous les moteurs de stockage mais ignorée
."Solutions pour MySQL 8.0.15 et versions antérieures
Pour forcer la validation des données en l'absence de support natif de la contrainte CHECK, vous pouvez créer un déclencheur :
<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>
Ce déclencheur interceptera toute instruction INSERT et si la valeur de la colonne SD est inférieure à 0, elle sera modifiée à 0, garantissant que la contrainte est maintenue.
VÉRIFIER les contraintes pour MySQL 8.0.16 et versions ultérieures
MySQL 8.0.16 introduit la prise en charge complète des contraintes CHECK. Pour définir les contraintes CHECK dans la version 8.0.16 ou ultérieure, utilisez la syntaxe suivante :
<code class="language-sql">CREATE TABLE Customer ( SD integer CHECK (SD > 0), Last_Name varchar (30), First_Name varchar(30) );</code>
MySQL appliquera désormais des contraintes et empêchera l'insertion de données qui violent les contraintes.
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!