Maison >base de données >tutoriel mysql >MySQL prend-il en charge les contraintes CHECK, et sinon, quelles sont les alternatives ?

MySQL prend-il en charge les contraintes CHECK, et sinon, quelles sont les alternatives ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-01 14:31:11658parcourir

Does MySQL Support CHECK Constraints, and If Not, What Are the Alternatives?

Ajout de contraintes CHECK personnalisées dans MySQL

Bien que la documentation MySQL inclue des exemples de contraintes CHECK, il est important de noter que ces contraintes ne sont pas actuellement supporté par le moteur. Par conséquent, les définir dans la définition de votre table n'appliquera aucune restriction sur les valeurs des données.

Explication

Selon le manuel MySQL, "La clause CHECK est analysée mais ignoré par tous les moteurs de stockage." Cela signifie que MySQL ignorera simplement la définition de la contrainte CHECK sans l'appliquer à la table.

Solution de contournement

Malheureusement, MySQL ne fournit pas de moyen direct d'appliquer CHECK contraintes. Cependant, une solution possible consiste à créer des déclencheurs à la place. Les déclencheurs sont des objets de base de données qui répondent à des événements spécifiques, tels que des opérations INSERT, UPDATE ou DELETE sur une table.

Par exemple, vous pouvez créer un déclencheur qui vérifie la valeur de l'attribut status avant d'autoriser un INSERT ou L'opération UPDATE doit se produire. Voici un exemple d'extrait de code pour un tel déclencheur :

DELIMITER $$
CREATE TRIGGER participants_validate_status BEFORE INSERT OR UPDATE ON Participants
FOR EACH ROW
BEGIN
  IF NEW.status NOT IN ('a', 'd', 'u') THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid value for status';
  END IF;
END
$$
DELIMITER ;

Solutions alternatives

Si vous avez besoin d'une base de données prenant en charge les contraintes CHECK, envisagez d'utiliser une autre source open source SGBDR tel que PostgreSQL. PostgreSQL offre une prise en charge robuste des contraintes CHECK et constitue une option viable pour gérer l'intégrité des données.

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!

Déclaration:
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