Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was bedeutet selbstreferenzierender Fremdschlüssel?

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

Dieser Fremdschlüssel ist völlig überflüssig und sinnlos, einfach löschen. Sie kann niemals verletzt werden, da eine Zeile mit sich selbst übereinstimmt und die Einschränkung validiert.

In einer hierarchischen Tabelle würde die Beziehung zwischen zwei verschiedenen Spalten bestehen (z. B. Id und ParentId )

Warum es sehr wahrscheinlich durch die Verwendung des visuellen Designers erstellt wurde, wenn Sie im Objekt-Explorer mit der rechten Maustaste auf den Knoten "Schlüssel" klicken und "Neuer Fremdschlüssel" auswählen, dann das Dialogfeld schließen, ohne den erstellten Fremdschlüssel zu löschen, und dann einen erstellen Andere Änderungen im geöffneten Tabellen-Designer und Speichern erzeugen diese Art von redundanter Einschränkung.