Sql-Server
SQL Server 等效於 Oracle USING INDEX 子句
Oracle 中是否有與 SQL Server 2008 等效的 USING INDEX 子句?專門用於構造:
CREATE TABLE c(c1 INT, c2 INT); CREATE INDEX ci ON c (c1, c2); ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci;
在有關唯一索引的 Sql Server文件中它指出(強調添加):
唯一索引通過以下方式實現:
PRIMARY KEY 或 UNIQUE 約束
創建 PRIMARY KEY 約束時,如果表上的聚群索引尚不存在並且您沒有指定唯一的非聚群索引,則會自動創建一個或多個列上的唯一聚群索引。主鍵列不能允許 NULL 值。
這似乎意味著有一種方法可以指定應將哪個索引用於主鍵。
Oracle 中是否有與 SQL Server 2008 等效的 USING INDEX 子句?
不會。當您在 SQL Server 中創建主鍵或唯一約束時,會自動創建支持該約束的唯一索引,並使用相同的鍵。
這似乎意味著有一種方法可以指定應將哪個索引用於主鍵。
否。如果您未指定,該文件僅試圖解釋自動支持索引將創建為集群還是非集群。我同意它的措辭令人困惑。
澄清一下,當您在未表達首選項的情況下向現有表添加主鍵約束時,如果表上沒有預先存在的聚集索引,則支持索引將被聚集。如果已經存在聚集索引,則支持索引將創建為非聚集索引
PRIMARY KEY CLUSTERED
您可以使用:或專門請求集群或非集群主鍵PRIMARY KEY NONCLUSTERED
。公平地說,文件在以下主題上更加清晰: