Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafaselic

[Resolvido] É possível criar duas PK's na mesma tabela?

Recommended Posts

sim é possível, se não me engano por incrível que pareça até 16 chaves... rsss

 

simples exemplo com 2 pk's

CREATE TABLE [dbo].[tb_Teste](
[PK1] [numeric](8, 0) NOT NULL,
[PK2] [varchar](2) NOT NULL,
[cp1] [varchar](100) NOT NULL,
[cp2] [varchar](15) NULL,
CONSTRAINT [PK_tb_Teste] PRIMARY KEY CLUSTERED 
(
[PK1] ASC,
[PK2] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

 

veja mais sobre o assunto no MSDN: CREATE TABLE, ALTER TABLE

 

cheers!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eriva_br,

 

Eu não vejo esse seu exemplo como 2 PK e sim 1 PK composta de 2 campos. Pode observar que tem apenas um nome pk_tb_teste. Se fossem duas Pks teriam 2 nomes de PK.

 

Eu acredito não ser possível. A alternativa que você tem como o Motta informou e usar uma PK e um indice unico. O indice unico você pode criar a vontade para uma mesma tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eriva_br,

 

Eu não vejo esse seu exemplo como 2 PK e sim 1 PK composta de 2 campos. Pode observar que tem apenas um nome pk_tb_teste. Se fossem duas Pks teriam 2 nomes de PK.

 

Eu acredito não ser possível. A alternativa que você tem como o Motta informou e usar uma PK e um indice unico. O indice unico você pode criar a vontade para uma mesma tabela.

você tem razão, é uma chave composta, mas alguém poderia citar um uso prático para 2 pk's em uma tabela, pois não consigo ver uma utilidade para isso, para mim soa mais como uma gambiarra método alternativo no MER..heheh

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por me tirar esta dúvida.

 

É porque encontrei uma tabela assim e não sabia se isto era possível. Pelo menos no SQL Server.

 

Realmente é uma chave composta.

 

Bom, é só isso. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo pratico é quando se tem um relacionamento de muito para muitos ai se tem a necessidade de usar uma chave composta em algumas vezes:

 

TabItem
PK - idItem


TabTipo
PK - IdTipo


TabTipoItem
PK - IdItem
PK - IdTipo

 

 

Como já foi citado acima não é a melhor forma de fazer mas é um recurso e não podemos esquecer que existe essa forma de fazer.

 

o ideal ao meu ponto de vista seria deixa-los como chave estrangeira (FK) e deixar uma PK apenas como um Identity.

 

Não consigo enxergar outra situação a não ser num relacionamento de muitos para muitos ou num auto relacionamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.