Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la signification de la clé étrangère d'auto-référence?

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

Cette clé étrangère est complètement redondante et inutile, il suffit de la supprimer. Elle ne peut jamais être violée car une ligne se correspond elle-même validant la contrainte.

Dans un tableau hiérarchique, la relation serait entre deux colonnes différentes (par exemple, Id et ParentId )

Quant à savoir pourquoi il peut avoir été créé très probablement grâce à l'utilisation du concepteur visuel si vous cliquez avec le bouton droit sur le nœud "Clés" dans l'explorateur d'objets et choisissez "Nouvelle clé étrangère", puis fermez la boîte de dialogue sans supprimer la clé étrangère créée, puis faites quelques d'autres modifications dans le concepteur de table ouvert et l'enregistrer créeront ce type de contrainte redondante.