Sql-Server
創建表時創建聚集索引失敗
執行以下腳本時出現錯誤;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='Table_Name') BEGIN CREATE TABLE Table_Name ( Field_Name_1 binary(32) NOT NULL CONSTRAINT PK_Name_Goes_Here PRIMARY KEY NONCLUSTERED , Field_Name_2 int NOT NULL , Field_Name_3 datetime NOT NULL INDEX IX_Name_Goes_Here CLUSTERED ) END
特別是它的聚集索引創建拋出以下錯誤:
消息 1018,級別 15,狀態 1,第 15 行
“索引”附近的語法不正確。如果打算將其作為表提示的一部分,則現在需要 WITH 關鍵字和括號。有關正確的語法,請參閱 SQL Server 聯機叢書。
這很奇怪,因為它適用於我們所有的伺服器,除了特定的 QA 伺服器。我們實施的修復是在表創建語句之外創建聚集索引,但如果有人以前遇到過這個問題,我會感興趣嗎?
SQL Server 2014 中添加了內聯索引聲明的語法,儘管在官方文件
中完全不清楚。在與文件所有者交談後,該主題現在準確地反映了內聯索引語法僅從 SQL Server 2014 開始有效(以及 2016 年的一些變體):CREATE TABLE
此語法適用於您的其他實例必須在 SQL Server 2014 或更高版本上。
在 2012 年,無論兼容性級別如何,您都需要單獨創建索引。