无法删除索引约束

时间:2013-01-17 22:42:56

标签: tsql

我试图首先删除索引,然后是PK(因为最终我需要在此表上执行截断)。

以下是此表和约束的屏幕截图:

enter image description here

以下是2个约束(在我右键单击它们并在SQL 2008中创建到剪贴板后从剪贴板获取的代码):

(主键)

ALTER TABLE [dbo].[Entry] ADD  CONSTRAINT [PK_Entry_Id] PRIMARY KEY CLUSTERED 
(
    [Id] 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 [dbo].[Entry] ADD  CONSTRAINT [PK_Entry_Id] PRIMARY KEY CLUSTERED 
(
    [Id] 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

3 个答案:

答案 0 :(得分:2)

删除主键应删除索引,并在创建主键时自动创建索引。

您只需在需要截断表时删除外键约束。这是为了确保没有依赖于它的表。

答案 1 :(得分:0)

您不需要也不能删除与主键关联的索引。您需要做的就是删除主键,并删除索引。

如果您要截断数据,则不必删除主键。

如果无法截断表,则应删除引用此表的外键。我假设您删除了此表引用其他表的外键,因为我们在您的数据中没有看到任何内容。

答案 2 :(得分:0)

常数和索引不一样 但在某些语法中,索引被称为约束 你有5个约束和一个索引 你不喜欢注意它在 PK_Entry_ID 这两个地方都有相同的名字 PK是一个索引。

并且索引不会阻止截断。

FK防止截断。

如果您想要删除索引,那么为什么要创建要创建的脚本 创建一个脚本来删除它。