Chr*_*sic 19 sql-server clustered-index sql-server-2008 sql-server-2008-r2 azure-sql-database
是否可以从SQL Server 2008中不是主键的create table语句创建聚簇索引?
这个目的是针对SQL Azure中的表,因此我不能首先创建表,然后在表上创建聚簇索引.
编辑:显然它是导致我的问题的FluentMigrator,它的版本表没有聚集索引,因此尝试创建版本控制表而不是我的表是错误的.
Rob*_*oek 43
是的,可以创建不是主键的聚簇索引.只需使用一份CREATE CLUSTERED INDEX声明.
CREATE TABLE dbo.myTable (
myTableId int PRIMARY KEY NONCLUSTERED
myColumn int NOT NULL
)
CREATE CLUSTERED INDEX myIndex ON dbo.myTable(myColumn)
Run Code Online (Sandbox Code Playgroud)
在Azure SQL数据库v12版本之前,您必须先拥有聚簇索引,然后才能向表中插入任何数据.从Azure SQL数据库v12开始,现在支持堆(没有聚簇索引的表).
如果您的数据库是在2016年6月之前创建的,则以下是升级到版本12的说明.
CREATE TABLE dbo.Table_1
(
Id int NOT NULL IDENTITY (1, 1) PRIMARY KEY NONCLUSTERED,
SomeOtherUniqueColumn int NOT NULL CONSTRAINT Item4 UNIQUE CLUSTERED
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
请注意主键上的非聚集规范
这仍然有效.
CREATE TABLE dbo.Table_1
(
SomeOtherUniqueColumn int NOT NULL CONSTRAINT Item4 UNIQUE CLUSTERED
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88568 次 |
| 最近记录: |