2010-08-05 23 views
4

La prise en charge de MySQL vérifie-t-elle la contrainte?La prise en charge de MySQL vérifie-t-elle la contrainte?

Je suis capable d'exécuter le script suivant dans MySQL sans erreur.

ALTER TABLE EMP_DB_DESIGN_EXCEL ADD (
    CONSTRAINT CHK_EMP_IS_ACTIVE CHECK (IS_ACTIVE IN ('Y','N'))); 

Mais il ne se reflète pas si je recherche:

SELECT * FROM information_schema.TABLE_CONSTRAINTS T where t.table_name='EMP_DB_DESIGN_EXCEL'; 

Répondre

6

Pour autant que je peux dire de l'utilisation passée et le manuel, MySQL ne supporte que PRIMARY KEY, UNIQUE et les contraintes FOREIGN KEY, et ceux-ci uniquement si la table est une table InnoDB. D'autres types de stockage acceptent ces contraintes et les stockent d'une certaine manière, mais ne les appliquent pas. Le type de contrainte que vous mentionnez n'est pas appliqué; il semble y avoir une discussion sur le site Web de MySQL à ce sujet.

2

Il est vraiment frustrant de ne pas pouvoir appliquer les règles que vous voulez sur vos tables, lignes et colonnes. Le nombre de moteurs pour les tables ne facilite pas non plus les choses. VÉRIFICATION, TRANSACTION, INDEX FULLTEXT, CLÉ ÉTRANGÈRE manquant dans certains moteurs et présents dans certains moteurs