Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é o significado da chave estrangeira de auto-referência?

ALTER TABLE [SchemaName].[TableName]  WITH CHECK ADD  
CONSTRAINT [FK_TableName_TableName] FOREIGN KEY([Id])
REFERENCES [SchemaName].[TableName] ([Id])

Essa chave estrangeira é completamente redundante e inútil, basta excluí-la. Ele nunca pode ser violado, pois uma linha corresponde a si mesma, validando a restrição.

Em uma tabela hierárquica, o relacionamento seria entre duas colunas diferentes (por exemplo, Id e ParentId )

Por que ele pode ter sido criado muito provavelmente através do uso do designer visual, se você clicar com o botão direito do mouse no nó "Chaves" no explorador de objetos e escolher "Nova chave estrangeira", feche a caixa de diálogo sem excluir a chave estrangeira criada e faça algumas outras alterações no designer de tabela aberta e salvá-lo criarão esse tipo de restrição redundante.