Je veux créer des tables dans SQL Server 2008, mais je ne sais pas comment créer une clé primaire composite. Comment puis-je y parvenir ?
Quelle est la différence entre utiliser Clé primaire y CONSTRAINT comme dans l'exemple de @matthew-abbott ?
Je veux créer des tables dans SQL Server 2008, mais je ne sais pas comment créer une clé primaire composite. Comment puis-je y parvenir ?
Quelle est la différence entre utiliser Clé primaire y CONSTRAINT comme dans l'exemple de @matthew-abbott ?
+1 - Oui, nommez vos contraintes, sinon Sql Server fait des choses désagréables comme les nommer PK_UserGrou_5DEAEAF5 dans la BD d'une version et PK_UserGrou_3214EC0777F66C69 dans une autre. C'est un problème si vous avez besoin de mettre à jour ou de supprimer le PK car vous devez d'abord obtenir le nom de la base de données et ensuite utiliser le sql dynamique (ou construire la commande en code d'abord). En outre, c'est laid.
Via Enterprise Manager (SSMS)...
Cliquez à droite sur le tableau sur lequel vous souhaitez créer la clé composite et sélectionnez Design .
Mettez en surbrillance les colonnes que vous souhaitez former comme une clé composite.
Cliquez avec le bouton droit de la souris sur ces colonnes et Définir la clé primaire
Pour voir le SQL, vous pouvez ensuite cliquer avec le bouton droit de la souris sur l'écran de l'ordinateur. Table
> Script Table As
> Create To
Pour MSSQL Server 2012
CREATE TABLE usrgroup(
usr_id int FOREIGN KEY REFERENCES users(id),
grp_id int FOREIGN KEY REFERENCES groups(id),
PRIMARY KEY (usr_id, grp_id)
)
UPDATE
Je devrais ajouter !
Si vous voulez modifier des clés étrangères / primaires, vous devez d'abord créer les clés avec des contraintes, sinon vous ne pourrez pas faire de modifications. Comme ceci ci-dessous :
CREATE TABLE usrgroup(
usr_id int,
grp_id int,
CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id),
CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id),
CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id)
)
En fait, la dernière façon est plus saine et plus sérielle. Vous pouvez regarder les noms des contraintes FK/PK. (dbo.dbname > Keys > ..) mais si vous n'utilisez pas de contrainte, MSSQL crée automatiquement des noms de FK/PK aléatoires. Vous devrez examiner chaque modification (alter table) dont vous avez besoin.
Je vous recommande de vous fixer une norme ; la contrainte doit être définie en fonction de cette norme. Vous n'aurez pas à mémoriser et vous ne devrez pas réfléchir trop longtemps. En bref, vous travaillez plus vite.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Comme vous êtes nouveau sur asp.net, un conseil : Les clés primaires composites sont un mauvaise chose qui indiquent généralement une conception mal pensée
56 votes
@smirkingman Des problèmes très importants peuvent être résolus, souvent presque exclusivement avec des clés primaires composites. Par exemple, lorsque vous avez des centaines/milliers d'utilisateurs qui enregistrent des lignes dans une seule table/un seul type d'entité. Vous voulez que les lignes soient ordonnées par user-id, plus une deuxième valeur. Votre jugement de valeur est tout simplement incorrect, sinon, nous aurions bientôt déprécié cette fonctionnalité.
2 votes
Duplicata possible de Création d'une clé primaire composite dans SQL Server