Les contraintes de vérification MySQL (CHECK) peuvent être implémentées via l'instruction CREATE TABLE ou ALTER TABLE, définies en fonction des exigences d'intégrité réelles de l'utilisateur. Il peut appliquer des contraintes CHECK sur des colonnes ou des tables individuellement. Mais le manuel mysql écrit très clairement : "Tous les moteurs de stockage analysent la clause CHECK, mais ignorent la clause CHECK." Ainsi, même si cela peut être écrit ainsi, cela n'aura pas d'effet restrictif.
Tutoriel recommandé : Tutoriel MySQL
La vérification des contraintes utilise le mot-clé CHECK. Le format de syntaxe spécifique est le suivant :
CHECK <表达式>
Où :
Si la clause de contrainte CHECK est placée après la définition d'une colonne dans le tableau, cette contrainte est également appelée contrainte CHECK basée sur les colonnes.
Lors de la mise à jour des données de la table, le système vérifiera si les lignes de données mises à jour répondent aux conditions de la contrainte CHECK. MySQL peut utiliser des expressions simples pour implémenter des contraintes CHECK, et permet également l'utilisation d'expressions complexes comme conditions de qualification, comme l'ajout de sous-requêtes aux conditions de qualification.
Remarque : Si la clause de contrainte CHECK est placée après la définition de toutes les colonnes et la définition des contraintes de clé primaire et des définitions de clé étrangère, cette contrainte est également appelée contrainte CHECK basée sur une table. Cette contrainte peut définir des qualifications sur plusieurs colonnes du tableau en même temps.
Définir les contraintes de vérification lors de la création d'une table
Les règles de syntaxe pour définir les contraintes de vérification lors de la création d'une table sont les suivantes :
CHECK(<检查约束>)
Créer des données tb_emp7 dans la table de base de données test_db, la valeur du champ salaire doit être supérieure à 0 et inférieure à 10 000. L'instruction SQL d'entrée et les résultats d'exécution sont les suivants.
mysql> CREATE TABLE tb_emp7 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> CHECK(salary>0 AND salary<100), -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id) -> ); Query OK, 0 rows affected (0.37 sec)
Ajouter des contraintes de vérification lors de la modification de la table
Les règles de syntaxe pour définir les contraintes de vérification lors de la modification de la table sont les suivantes :
ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)
Modifier le Table de données tb_dept, exigences La valeur du champ id est supérieure à 0. L'instruction SQL d'entrée et les résultats d'exécution sont les suivants.
mysql> ALTER TABLE tb_emp7 -> ADD CONSTRAINT check_id -> CHECK(id>0); Query OK, 0 rows affected (0.19 sec) Records: 0 Duplicates: 0 Warnings: 0
Solution : utilisez des déclencheurs pour implémenter la fonction de contrainte de vérification CHECK.
(1) Créez tb_student (tableau d'informations sur les étudiants).
-- 创建学生信息表 CREATE TABLE tb_student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INT NOT NULL );
(2) Créez un déclencheur qui vérifie si le champ d'âge est valide.
-- 创建触发器 CREATE TRIGGER trg_tb_student_insert_check BEFORE INSERT ON tb_student FOR EACH ROW BEGIN DECLARE msg varchar(100); IF NEW.age <= 0 OR NEW.age >= 100 THEN SET msg = CONCAT('您输入的年龄值:',NEW.age,' 为无效的年龄,请输入0到100以内的有效数字。'); SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg; END IF; END;
(3) Écrivez des déclarations de test.
INSERT INTO tb_student(name,age) VALUES('Kevin',120);
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!