我试图首先删除索引,然后是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
答案 0 :(得分:2)
删除主键应删除索引,并在创建主键时自动创建索引。
您只需在需要截断表时删除外键约束。这是为了确保没有依赖于它的表。
答案 1 :(得分:0)
您不需要也不能删除与主键关联的索引。您需要做的就是删除主键,并删除索引。
如果您要截断数据,则不必删除主键。
如果无法截断表,则应删除引用此表的外键。我假设您删除了此表引用其他表的外键,因为我们在您的数据中没有看到任何内容。
答案 2 :(得分:0)
常数和索引不一样 但在某些语法中,索引被称为约束 你有5个约束和一个索引 你不喜欢注意它在 PK_Entry_ID 这两个地方都有相同的名字 PK是一个索引。
并且索引不会阻止截断。
FK防止截断。
如果您想要删除索引,那么为什么要创建要创建的脚本 创建一个脚本来删除它。