Ho ereditato un database SQL Server che ha una tabella con una chiave primaria denominata RecordID. La definizione della tabella e la chiave esterna definita in questo modo:Perché creare un vincolo di chiave esterna che fa riferimento alla chiave primaria della stessa tabella dal campo chiave primaria
CREATE TABLE [dbo].[MyTable](
[RecordId] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nvarchar](255) NOT NULL,
[Record] [nvarchar](255) NOT NULL,
[ErrorDescription] [nvarchar](255) NULL,
[ProcessDate] [datetime] NOT NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[RecordId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [FK_MyTable_MyTable] FOREIGN KEY([RecordId])
REFERENCES [dbo].[MyTable] ([RecordId])
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_MyTable]
GO
ho potuto capire questo se la chiave esterna fa riferimento da un campo diverso nella stessa tabella di nuovo al campo chiave primaray che consentirebbe una gerarchia, ma in In questo caso i due campi nella definizione di chiave esterna sono esattamente lo stesso campo. È solo un errore nella definizione originale della tabella e della chiave esterna? O c'è un vero vantaggio in qualche modo a questo?
Grazie in anticipo per il vostro tempo nel rispondere.
Forse controlla se c'è un'altra tabella nel database che sembra * dovrebbe * fare riferimento a questa tabella ma non lo è. –