Quero criar tabelas no SQL Server 2008, mas não sei como criar chave primária composta. Como posso conseguir isso?
Quero criar tabelas no SQL Server 2008, mas não sei como criar chave primária composta. Como posso conseguir isso?
Respostas:
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) ...
Para ver o SQL você pode em seguida, clique direito sobre o Table
> Script Table As
>Create To
Para 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)
)
ATUALIZAR
Eu devo adicionar!
Se você deseja adicionar chaves estrangeiras / primárias, primeiro crie as chaves com restrições ou não poderá fazer alterações. Assim abaixo:
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)
)
Na verdade, o último caminho é mais saudável e serial. Você pode procurar os nomes das restrições FK / PK (dbo.dbname> Chaves> ..) mas se você não usar uma restrição, o MSSQL cria automaticamente nomes aleatórios de FK / PK. Você precisará observar todas as alterações (alterar tabela) necessárias.
Eu recomendo que você defina um padrão para si mesmo; a restrição deve ser definida de acordo com o seu padrão. Você não precisará memorizar e nem pensar muito. Em resumo, você trabalha mais rápido.
Primeiro, crie o banco de dados e a tabela, adicionando manualmente as colunas. Em qual coluna será a chave primária. Você deve clicar com o botão direito nessa coluna e definir a chave primária e definir o valor inicial da chave primária.
Para criar uma chave exclusiva composta na tabela
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])
)