web-dev-qa-db-fra.com

Comment créer une clé primaire composite dans SQL Server 2008

Je souhaite créer des tables dans SQL Server 2008, mais je ne sais pas comment créer une clé primaire composite. Comment puis-je atteindre cet objectif?

155
Ganesamoorthy
create table my_table (
     column_a integer not null,
     column_b integer not null,
     column_c varchar(50),
     primary key (column_a, column_b)
);
225
Thilo
CREATE TABLE UserGroup
(
  [User_Id] INT NOT NULL,
  [Group_Id] INT NOT NULL

  CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
158
Matthew Abbott

Via Enterprise Manager (SSMS) ...

  • Cliquez avec le bouton droit de la souris sur la table sur laquelle vous souhaitez créer la clé composite et sélectionnez Conception.
  • Mettez en surbrillance les colonnes que vous souhaitez former en tant que clé composite
  • Clic droit sur ces colonnes et Set Primary Key

Pour voir le code SQL, vous pouvez ensuite cliquer avec le bouton droit de la souris sur la Table> Script Table As> Create To

45
kevchadders

Je sais que je suis en retard à cette fête, mais pour une table existante, essayez:

ALTER table TABLE_NAME
ADD CONSTRAINT [name of your PK, e.g. PK_TableName] PRIMARY KEY CLUSTERED (column1, column2, etc.)
24
Ray K.

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 souhaitez ajouter des clés étrangères/principales à modifier, vous devez tout d'abord créer les clés avec des contraintes ou vous ne pouvez pas apporter 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, le dernier moyen est plus sain et en série. Vous pouvez consulter les noms des contraintes FK/PK (nombo.bdd> Touches> ..) , mais si vous n'utilisez pas de contrainte, MSSQL crée automatiquement noms aléatoires FK/PK. Vous aurez besoin de regarder chaque changement (alter table) dont vous avez besoin.

Je vous recommande de définir une norme pour vous-même; la contrainte doit être définie selon votre standard. Vous n'aurez pas à mémoriser et vous n'aurez pas à réfléchir trop longtemps. En bref, vous travaillez plus vite.

21

Commencez par créer la base de données et la table en ajoutant manuellement les colonnes. Dans quelle colonne doit être la clé primaire. Vous devez cliquer avec le bouton droit de la souris sur cette colonne, définir la clé primaire et définir la valeur initiale de la clé primaire.

1
Sakthi Thanuskodi