2013-01-17 92 views
1

我想先删除索引然后PK(因为最终我需要在此表上截断)。无法删除索引约束

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

enter image description here

这里有2个约束(代码粘贴板上取得后,我右键单击它们并做创建于2008年SQL到剪贴板):

(主键)

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 

(据说这是创建索引码后,我做了右键单击CREA te剪贴板..但它是相同的确切代码!不知道为什么):

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 

回答

2

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

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

+0

好吧,我不能放弃PK,因为那时我得到的错误说它被绑定到一个索引....所以它看起来像一个鸡和鸡蛋的情况。 – PositiveGuy

+0

尝试删除外键 – codingbiz

+0

,但我最终想要做的是我有该表,我需要重新导入所有记录,但我不想重新输入PK标识,这意味着我正在移植Identities跳过数字。因此,例如,我重新插入此表中的数据中的第一个记录之一具有45的PK ...不是1.因此,试图清除表中的内容,并取消约束,然后导入,然后放回受到限制。因此,最终我需要暂时取消PK约束,直到我导入并将该PK和其他约束重新输入。 – PositiveGuy

0

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

如果您要截断数据,您不应该删除主键。

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

0

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

而且索引不会阻止截断。

FK防止截断。

如果您正在试图删除索引,您为什么要创建一个脚本。
创建一个脚本来放下它。