sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es el significado de la clave externa autorreferencial?

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

Esta clave externa es completamente redundante y no tiene sentido, simplemente elimínela. Nunca se puede violar ya que una fila coincide con la validación de la restricción.

En una tabla jerárquica, la relación sería entre dos columnas diferentes (por ejemplo, Id y ParentId )

En cuanto a por qué es muy probable que se haya creado mediante el uso del diseñador visual si hace clic con el botón derecho en el nodo "Claves" en el explorador de objetos y elige "Nueva clave externa", luego cierra el cuadro de diálogo sin eliminar la clave externa creada y luego hace algunos otros cambios en el diseñador de tablas abierto y guárdelo crearán este tipo de restricción redundante.