我正在使用大型现有数据库并发现一些奇怪的事情。其中有一个主键,外键似乎引用自己。任何人都可以想到为什么这样设置?我想删除所有这些,但不想因为我不理解而破坏任何东西。
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
答案 0 :(得分:1)
它没有任何意义,正如您在下面的评论中所说的那样。
该指令的唯一实际用途是避免某些恶作剧,例如来自存储过程的truncate
,或类似的东西,并且无论谁做到这一点都不知道它可以通过权限来完成。
要么就是这样,要么是作者无能为力地进行测试。