SQL Server: 将聚集主键索引更改为非聚集索引

4

如何将主聚集索引更改为非聚集索引。(作为“次要”表,我想将聚集索引用于“头”表的外键列。)

这对我不起作用(错误似乎是合理的 :)

DROP INDEX ClientUsers.PK_ClientUsers
CREATE UNIQUE CLUSTERED INDEX IDX_ClientUsers_Id ON ClientUsers(Id)

Msg 3723, Level 16, State 4, Line 7
An explicit DROP INDEX is not allowed on index 'ClientUsers.PK_ClientUsers'. 
It is being used for PRIMARY KEY constraint enforcement.

你尝试过先删除主键约束吗?ALTER TABLE ClientUsers DROP CONSTRAINT PK_ClientUsers - Alek Davis
2个回答

4
我认为你需要做以下步骤:
  1. 删除外键
  2. 删除主键
  3. 删除聚集索引
  4. 重新创建主键
  5. 重新创建外键
  6. 在外键列上重新创建聚集索引
然后,可选地在主键列上创建第二个索引。

1
你尝试过同时删除表中的主键约束、索引,然后重新添加它们吗?
ALTER TABLE table_name DROP primary key

如果他有一个外键,那么这会成为一个问题,不是吗? - Preet Sangha
可能是的,但问题并不清楚这个外键是否已经在此列上设置 - 我只是在解决眼前的问题。如果我们担心外键,我们需要考虑所有外键。这可能涉及到许多依赖于此列的外键:可能需要进行大量的外键破坏/重新实例化。 - Joel Goodwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接