我有一个堆表 - 没有定义聚集索引 - (调用它table A
),在不可为空的列上有一个唯一的非聚集索引(调用column ID
和index IX
)。
我想index IX
在定义主键约束时使用column ID
for table A
。
某处的文档是这样说的:
数据库引擎自动创建唯一索引以强制执行 PRIMARY KEY 约束的唯一性要求。如果表上不存在聚集索引或未显式指定非聚集索引,则会创建唯一的聚集索引以强制执行 PRIMARY KEY 约束。
我已经阅读了整个ALTER TABLE
文档,但似乎没有“非聚集索引是……明确指定的”的语法。
已尝试定义非聚集index IX
和指定主键,还尝试了更改表的各种组合...添加约束...主键语句无济于事。
有意义的是,我的索引 IX 等效于 SQL Server 在我简单地指定更改表中的 ID 列时创建的非聚集索引 .... 添加约束 .... 主键 (ID) 语句,但我不希望拥有 SQL Server 为我创建的这个冗余索引,而是让它使用index IX
它还包含一个列的包含列表。
如果我删除 SQL Server 创建的索引,那么主键约束也会消失。
如果可以更改 SQL Server 创建的索引,我的问题将得到解决,但我想对其进行的更改需要删除并重新创建。