无法删除FK约束

时间:2013-01-18 05:31:45

标签: sql-server tsql

运行下面的代码时我一直收到错误:

  

无法截断表'Entry',因为它正被FOREIGN KEY约束引用。

enter image description here

    --ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [PK_Entry_Id] 
    ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_HideChrome]
    ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_IsDiscussionEnabled]
    ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_MetaDescription]
    ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_MetaTitle]

    Truncate table [Entry]

    ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [DF_Entry_HideChrome]  DEFAULT ((0)) FOR [HideChrome]
    GO

    ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [DF_Entry_IsDiscussionEnabled]  DEFAULT ((1)) FOR [IsDiscussionEnabled]
    GO

    ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [DF_Entry_MetaDescription]  DEFAULT ('') FOR [MetaDescription]
    GO

ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [DF_Entry_MetaTitle]  DEFAULT ('') FOR [MetaTitle]
GO

ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [DF_EntryStatus]  DEFAULT ('Public-Page') FOR [Status]
GO

好的,所以我从引用该表的任何表中删除了所有其他约束,但我仍然得到一个错误,说仍然存在引用我的Entry表的PK约束。

我去查看条目的依赖关系(查看依赖关系),看看评论表仍然依赖于它:

enter image description here

然后我看到有一个FK作为评论表的主要字段之一但你不能放弃我猜。

所以当View Dependencies表示我在其他表上删除约束后剩下的唯一表来自Comment表时,我没有看到其他依赖项引用此Entry表的内容?我没有看到它。

2 个答案:

答案 0 :(得分:0)

在删除您提供的约束的代码中,您不会删除DF_EntryStatus密钥。你只丢掉了这4个键。

ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_HideChrome]
ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_IsDiscussionEnabled]
ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_MetaDescription]
ALTER TABLE [dbo].[Entry] DROP CONSTRAINT [DF_Entry_MetaTitle]

由于此DF_EntryStatus仍然引用您无法截断该表。

希望这能解决我们的问题。

答案 1 :(得分:0)

由于一些奇怪的原因,我不得不放弃密钥FK_Comment_Comment。不知道它与Entry表有什么关系......虽然很奇怪。