是否可以通过不是主键的SQL Server 2008中的create table语句创建聚簇索引?

这样做的目的是为了在SQL Azure中创建一个表,因此我不能选择先创建该表,然后在该表上创建聚簇索引。

编辑:显然是FluentMigrator引起了我的问题,它的版本表没有聚集索引,因此尝试创建版本表而不是我的表时出错。

最佳答案

是的,可以创建不是主键的聚集索引。只需使用 CREATE CLUSTERED INDEX 语句即可。

CREATE TABLE dbo.myTable (
    myTableId int PRIMARY KEY NONCLUSTERED
    myColumn int NOT NULL
)

CREATE CLUSTERED INDEX myIndex ON dbo.myTable(myColumn)

在Azure SQL Database v12之前的版本中,必须具有聚集索引,然后才能将任何数据插入表中。从Azure SQL Database v12开始,现在支持堆(没有聚集索引的表)。

如果您的数据库是在2016年6月之前创建的,则为instructions for upgrading to version 12

关于sql-server - SQL Server使用没有主键的聚集索引创建表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8333013/

10-16 12:25
查看更多