2011-04-27 5 views
8

Selon le manuel MySQL "La clause CHECK est analysée mais ignorée par tous les moteurs de stockage." Donc, je sais que la solution simple est hors de question, mais existe-t-il un autre moyen possible de parvenir au même résultat? Peut-être à travers une utilisation de déclencheurs ou de procédures stockées? Si c'est le cas, comment?Contrainte MySQL CHECK alternative

Aussi, comme il est juste "analysé" est-ce aussi bon que de dire éviter de l'utiliser, car il ne sert à rien?

Utilisation des tables MySQL 5.5.11 et InnoDB

Répondre

5

Jetez un oeil à cet article intéressant

https://wikis.oracle.com/display/mysql/Triggers#Triggers-EmulatingCheckConstraints

J'utilise souvent cette méthode.

+0

Un grand merci pour ce lien. Donne de bons détails sur la façon de l'implémenter. Je vais devoir jouer avec un peu et voir si les limitations soulèvent des problèmes dans mon application. Utilisez-vous vraiment un db dédié uniquement pour ces déclencheurs? – swisscheese

+0

Salut. Je ne comprends pas ce que vous voulez dire avec db dédié. J'utilise des déclencheurs chaque fois que j'en ai besoin dans tous les dbs qui en ont besoin. –

+0

Tiré de ce tutoriel "Pour ce faire, nous devons créer deux choses, une table pour produire l'erreur et une procédure à insérer dans cette table qui à son tour générer une erreur.Ce serait une bonne idée de créer ces dans un base de données séparée afin qu'ils puissent être accessibles par n'importe quelle base de données. " – swisscheese