我最近在我们的一个遗留数据库中遇到了一个奇怪的场景,我们的 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

任何人都知道或对这实际上可能做什么有任何想法?

最佳答案

可以使用引用同一个表的外键来实现层次结构,但当然我们应该在同一个表中使用不同的列。
我认为这张表的创建者只是犯了错误。

10-07 12:35
查看更多