具有外键的列本身

时间:2017-10-31 10:42:54

标签: sql sql-server foreign-keys

我正在使用大型现有数据库并发现一些奇怪的事情。其中有一个主键,外键似乎引用自己。任何人都可以想到为什么这样设置?我想删除所有这些,但不想因为我不理解而破坏任何东西。

ALTER TABLE [career].[AssignmentRange] ADD  CONSTRAINT [PK_AssignmentRange] 
PRIMARY KEY CLUSTERED 
(
     [AssignmentRangeID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

ALTER TABLE [career].[AssignmentRange]  WITH CHECK ADD  CONSTRAINT 
[FK_AssignmentRange_AssignmentRange] FOREIGN KEY([AssignmentRangeID])
REFERENCES [career].[AssignmentRange] ([AssignmentRangeID])
GO

1 个答案:

答案 0 :(得分:1)

它没有任何意义,正如您在下面的评论中所说的那样。

该指令的唯一实际用途是避免某些恶作剧,例如来自存储过程的truncate,或类似的东西,并且无论谁做到这一点都不知道它可以通过权限来完成。

要么就是这样,要么是作者无能为力地进行测试。