Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è il significato di chiave esterna autoreferenziale?

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

Questa chiave esterna è completamente ridondante e inutile eliminarla. Non può mai essere violato poiché una riga corrisponde a se stessa convalidando il vincolo.

In una tabella gerarchica la relazione sarebbe tra due colonne diverse (ad es. Id e ParentId )

Per quanto riguarda il motivo per cui potrebbe essere stato creato molto probabilmente attraverso l'uso del visual designer se fai clic con il pulsante destro del mouse sul nodo "Chiavi" in Esplora oggetti e scegli "Nuova chiave esterna", quindi chiudi la finestra di dialogo senza eliminare la chiave esterna creata e quindi creane alcune altre modifiche nel designer della tabella aperta e salvarlo creerà questo tipo di vincolo ridondante.