Olá! Referente à criação da tabela Fato_001, eu tenho uma dúvida sobre a sintaxe do código.
(Vou excluir linhas do código que não abrangem a dúvida).
Quando desejo utilizar todos os campos de código como PRIMARY KEY, fiz o seguinte código:
[Cod_Cliente] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Cod_Produto] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Cod_Organizacional] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Cod_Fabrica] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Cod_Dia] NVARCHAR(50) NOT NULL PRIMARY KEY
Vejam que eu defini, em cada linha, a coluna a ser criada como PRIMARY KEY.
Porém, o código do professor junta tudo numa linha só:
PRIMARY KEY ([Cod_Cliente], [Cod_Produto], [Cod_Organizacional], [Cod_Fabrica], [Cod_Dia])
Eis que quando eu recompilo o código com a minha metodologia, recebo a seguinte mensagem de erro:
SQL71531: The table or view ([dbo].[Fato_001]) has more than one clustered index. DatawarehouseSucos
SQL71533: A table or table-valued function ([dbo].[Fato_001]) contains more than one primary key
Quando compilo com a do professor, não dá erro (Ainda bem, né?! rs)
Eis a dúvida: Qual a diferença entre as duas sintaxes? Ambas fazem a declaração de PRIMARY KEYS às colunas que devem receber esse atributo. Porém, declarar em cada uma das linhas, não resolve (por mais que o ícone de chave apareça na minha tabela, do mesmo jeito que se for numa linha única). Na minha cabeça, são a mesma coisa. Mas, em termos lógicos, por que não?
Obrigado de antemão!