J'ai une table:
table votes (
id,
user,
email,
address,
primary key(id),
);
Maintenant, je veux rendre les colonnes utilisateur, email, adresse uniques (ensemble).
Comment faire cela dans MySql?
Bien sûr, l'exemple est juste ... un exemple. Alors, ne vous inquiétez pas de la sémantique.
J'ai une table MySQL:
et la CLÉ UNIQUE fonctionne comme prévu, elle autorise plusieurs lignes NULL d'id_box_elements et id_router.
J'utilise MySQL 5.1.42, donc il y a probablement eu une mise à jour sur le problème discuté ci-dessus. Heureusement, cela fonctionne et j'espère que cela restera ainsi.
la source
Les index uniques multi-colonnes ne fonctionnent pas dans MySQL si vous avez une valeur NULL en ligne car MySQL traite NULL comme une valeur unique et n'a actuellement pas de logique pour le contourner dans les index multi-colonnes. Oui, le comportement est insensé, car il limite beaucoup d'applications légitimes d'index multi-colonnes, mais c'est ce qu'il est ... Pour l'instant, c'est un bug qui a été estampillé "ne sera pas corrigé" sur le MySQL bug-track ...
la source
ENGINE BDB
et, 2) il s'agit d' un comportement documenté , bien que, à mon humble avis, pas suffisamment documenté étant donné à quel point il peut être surprenant / désagréable. Voir le bogue MySQL 25544 bugs.mysql.com/bug.php?id=25544 pour une discussion.Avez-vous essayé cela?
la source
UNIQUE KEY
thekey` (user
,email
,address
) `. J'utilise la version 5.5.24 de MYSQL Vous pouvez définir cela même dans PHPMYADMIN si vous l'utilisez. J'utilise la version 3.5.1 de PMA.Cela fonctionne pour la version 5.5.32 de mysql
la source
MySql 5 ou supérieur se comporte comme ceci (je viens de tester):
Exemple: PRODUCT_NAME, PRODUCT_VERSION 'glass', null 'glass', null 'wine', 1
Maintenant, si vous essayez d'insérer à nouveau ('wine' 1), il signalera une violation de contrainte J'espère que cela vous aidera
la source
Vous pouvez ajouter des index uniques à plusieurs colonnes via phpMyAdmin . (J'ai testé dans la version 4.0.4)
Accédez à la page de structure de votre table cible. Ajoutez un index unique à l'une des colonnes. Développez la liste des index en bas de la page de structure pour voir l'index unique que vous venez d'ajouter. Cliquez sur l'icône de modification et, dans la boîte de dialogue suivante, vous pouvez ajouter des colonnes supplémentaires à cet index unique.
la source
Je le fais comme ça:
Ma convention pour un unique
index_name
estTableName_Column1_Column2_Column3_uindex
.la source
Pour ajouter un index unique, les éléments suivants sont requis:
1) nom_table
2) nom_index
3) colonnes sur lesquelles vous souhaitez ajouter un index
Dans votre cas, nous pouvons créer un index unique comme suit:
la source
Si vous souhaitez éviter les doublons à l'avenir. Créez une autre colonne, par exemple id2.
Ajoutez maintenant l'unique sur deux colonnes:
la source
Si vous créez une table dans mysql, utilisez alors:
la source
Débarrassez-vous d'abord des doublons existants
Ajoutez ensuite la contrainte unique
Vérifiez la contrainte avec
Notez que l'utilisateur, l'adresse e-mail et l'adresse seront considérés comme uniques si l'un d'eux a une valeur nulle.
la source
Pour PostgreSQL ... Cela n'a pas fonctionné pour moi avec index; cela m'a donné une erreur, alors j'ai fait ceci:
PostgreSQL a donné à l'index unique son propre nom. Je suppose que vous pouvez changer le nom de l'index dans les options de la table, si cela doit être changé ...
la source