Maison >base de données >tutoriel mysql >Comment MySQL garantit-il que plusieurs champs sont uniques ?
Cours recommandés : Tutoriel MySQL
Certaines tables dans MySQL doivent parfois créer des contraintes uniques sur certains champs. Bien sûr, vous pouvez également juger. avant l'insertion Existe-t-il un moyen d'éviter la duplication ? Si vous ne souhaitez pas ajouter de code supplémentaire pour implémenter de manière plus flexible des contraintes uniques sur certains champs, mysql propose deux méthodes :
1.clé unique
modifier la table xx
ajouter une clé unique no_account(no,collection_account)
2.index unique
alter table xxadd unique no_account_index(no,collection_account);
Supposons que les utilisateurs soient tenus d'aimer les commentaires. La conception de la base de données est composée de trois tables, la table utilisateur t_user, la table de commentaires t_comment, comme la table t_praise, parmi lesquels likes Il y a deux clés étrangères dans la table, user_id et comment_id, qui sont respectivement associées à l'identifiant utilisateur de la table utilisateur et à l'identifiant commentaire de la table commentaire. Il est alors stipulé qu'un utilisateur ne peut aimer que le même commentaire. Une fois. Une façon d'y parvenir est d'insérer les likes. Avant d'entrer dans la table, demandez d'abord s'il existe des enregistrements like via user_id et comment_id. Sinon, effectuez l'opération d'insertion, sinon les likes que vous avez déjà aimés seront renvoyés. implémenté de cette manière, il y aura une opération de requête de base de données supplémentaire. Une meilleure implémentation consiste à modifier L'id utilisateur et le commentaire_id de la table similaire sont des contraintes uniques, c'est-à-dire que ces deux colonnes ne peuvent pas être identiques en même temps. , si l'opération d'insertion est effectuée, si une opération similaire a déjà été effectuée, la base de données générera une violation de la contrainte de clé unique. De cette façon, plusieurs problèmes peuvent être évités. Une opération de requête de base de données est effectuée. plusieurs colonnes comme contraintes uniques sont :
CREATE TABLE `t_praise` ( `id` int(12) unsigned NOT NULL AUTO_INCREMENT, `comment_id` int(12) NOT NULL, `user_id` int(12) NOT NULL, KEY `FK_t_praise_comment` (`comment_id`), KEY `FK_t_praise_user` (`user_id`), UNIQUE KEY `UK_praise` (`comment_id`,`user_id`) )
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!