Maison > base de données > tutoriel mysql > Comment utiliser VIEWS pour simuler CHECK CONSTRAINT ?

Comment utiliser VIEWS pour simuler CHECK CONSTRAINT ?

WBOY
Libérer: 2023-08-27 14:37:09
avant
1156 Les gens l'ont consulté

如何使用 VIEWS 来模拟 CHECK CONSTRAINT?

Comme nous le savons tous, MySQL prend en charge les clés étrangères pour l'intégrité référentielle, mais ne prend pas en charge les contraintes CHECK. Mais nous pouvons les simuler en utilisant des déclencheurs. Ce problème peut être résolu à l'aide de l'exemple ci-dessous -

Exemple

Supposons que nous ayons une table nommée "car1". Le numéro d'enregistrement de la syntaxe est comme deux lettres, un tiret, trois chiffres, un tiret, Deux lettres comme celle-ci -

mysql> Create table car1 (number char(9));
Query OK, 0 rows affected (0.32 sec)

mysql> Insert into car1 values('AB-235-YZ');
Query OK, 1 row affected (0.10 sec)
Copier après la connexion

La valeur ci-dessus est valide, mais qu'en est-il de la valeur que nous souhaitons insérer dans la prochaine requête ?

mysql> insert into car1 values('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)
Copier après la connexion

La valeur ci-dessus n'est pas une valeur valide car elle contient un caractère entre les nombres, ce qui viole la syntaxe fixe que nous utilisons.

Créez une VUE pour simuler CHECK CONSTRAINT pour insérer et mettre à jour des valeurs -

mysql> Create view car_invalid_check as
    -> Select * from car1 WHERE number rlike '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$'
    -> with check option;
Query OK, 0 rows affected (0.12 sec)

mysql> Insert into car_invalid_check values('AB-2X5-YZ');
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'

mysql> Insert into car_invalid_check values('AB-235-YZ');
Query OK, 1 row affected (0.09 sec)

mysql> Update car_invalid_check SET NUMBER = 'AB-2X5-ZT';
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'
Copier après la connexion

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:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal