是否可以通过不是主键的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/