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?
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?
Réponses:
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
Via Enterprise Manager (SSMS) ...
Pour voir le SQL vous pouvez cliquer droit sur le 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)
)
METTRE À JOUR
Je devrais ajouter!
Si vous souhaitez ajouter des modifications de clés étrangères / primaires, vous devez 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 rechercher les noms des contraintes FK / PK (dbo.dbname> Keys> ..) mais si vous n'utilisez pas de contrainte, MSSQL crée automatiquement des noms FK / PK aléatoires. Vous devrez examiner chaque changement (alter table) dont vous avez besoin.
Je vous recommande de vous fixer une norme; 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. Bref, vous travaillez plus vite.
Créez d'abord 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 de départ de la clé primaire.
Pour créer une clé unique composite sur la table
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)