我最近在我们的一个遗留数据库中遇到了一个奇怪的场景,我们的 DBA(不是创建它的那个)不确定为什么要这样做以及它会带来什么好处。我们唯一能想到的就是它做错了。在表上定义了以下外键约束:
CREATE TABLE [dbo].[SomeTable]
(
[Id] SMALLINT IDENTITY (1,1) NOT NULL,
-- other columns
CONSTRAINT [PK_SomeTable] PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SomeTable] WITH CHECK ADD CONSTRAINT [FK_SomeTable_SomeTable]
FOREIGN KEY ([Id]) REFERENCES [dbo].[SomeTable] ([Id])
GO
ALTER TABLE [dbo].[SomeTable] CHECK CONSTRAINT [FK_SomeTable_SomeTable]
GO
任何人都知道或对这实际上可能做什么有任何想法?
最佳答案
可以使用引用同一个表的外键来实现层次结构,但当然我们应该在同一个表中使用不同的列。
我认为这张表的创建者只是犯了错误。