1

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

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

在此处输入图像描述

这是 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
4

3 回答 3

2

删除主键应该删除索引以及创建主键时自动创建的索引。

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

于 2013-01-17T22:53:30.933 回答
0

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

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

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

于 2013-01-17T22:49:32.657 回答
0

常量和索引不一样。
但在某些语法中,索引被称为约束。
您有 5 个约束和一个索引。
您不喜欢注意到它在两个点PK_Entry_ID中具有相同的名称。
PK 是一个索引。

并且索引不会阻止截断。

FK 防止截断。

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

于 2013-01-17T23:01:05.967 回答