ALTER TABLE [SchemaName].[TableName] WITH CHECK ADD
CONSTRAINT [FK_TableName_TableName] FOREIGN KEY([Id])
REFERENCES [SchemaName].[TableName] ([Id])
Ten klucz obcy jest całkowicie zbędny i nie ma sensu, wystarczy go usunąć. Nigdy nie może zostać naruszone, ponieważ wiersz pasuje do siebie, sprawdzając poprawność ograniczenia.
W tabeli hierarchicznej relacja byłaby między dwiema różnymi kolumnami (np. Id
i ParentId
)
Jeśli chodzi o to, dlaczego mógł zostać utworzony, jest całkiem prawdopodobne przy użyciu projektanta wizualnego, jeśli klikniesz prawym przyciskiem myszy węzeł „Klucze” w eksploratorze obiektów i wybierzesz „Nowy klucz obcy”, a następnie zamkniesz okno dialogowe bez usuwania utworzonego klucza obcego, a następnie dokonasz inne zmiany w otwartym projektancie tabel i ich zapisanie stworzą tego rodzaju nadmiarowe ograniczenie.