Dans postgres nous avons une contrainte définie qui permet essentiellement de limiter à un le nombre d'entrées dans une table avec une certaine valeur. Nous avons créé cette contrainte:Contrainte unique avec conditions dans MYSQL
créer une liste d'index unique $ default $ uk sur list_group (visitor_uid) où list_type = 'default';
Cela signifie que la contrainte unique est uniquement appliquée lorsque list_type = 'default', de sorte qu'il ne peut y avoir qu'une seule liste 'par défaut' par visiteur dans la table.
Il semblerait que MySql ne prenne pas en charge l'espace supplémentaire sur la contrainte unique. Existe-t-il un autre moyen de supporter cela dans le schéma de base de données pour MySQL? MYSQL ne supporte pas de tels types de contraintes.
ouais - pas tout à fait. Le problème avec ce que vous avez, c'est que chaque liste_group devrait avoir un type_list unique pour chaque visiteur. Nous ne le voulons pas. Ce que nous essayons d'accomplir est de permettre à chaque visiteur d'avoir un seul groupe de liste avec list_type = 'default'. Pour les autres list_types, cela n'a pas d'importance s'il y a des doublons. – harmanjd
ho, à droite. Ensuite, je ne connais pas de moyen de le faire dans MySQL, puisque CHECK constaint n'est pas encore supporté par les moteurs de stockage: http://forums.mysql.com/read.php?136,152474,240479#msg-240479. Mais, comme codymanix dit, je préfère modifier la structure de données si l'application de cette règle dans la base de données est essentielle. –