CREATE TABLE dbo.t_MetricBook ( MetricSetID smallint NOT NULL, BookID smallint NOT NULL, ReportingCcyAmount decimal(18,2) NOT NULL, CONSTRAINT PK_t_MetricBook PRIMARY KEY CLUSTERED (MetricSetID,BookID) )
解釋:
CONSTRAINT PK_t_MetricBook PRIMARY KEY CLUSTERED (MetricSetID,BookID)
CONSTRAINT :創建約束
PK_t_MetricBook:主鍵的名稱
PRIMARY KEY: 表明創建的是主鍵約束
CLUSTERED :表示索引類型是聚集索引
---------------------------------------
詳細介紹
在創建Table設定主鍵的時候,SQL Server會自動創建一個對應的Clustered Index。如果使用Microsoft SQL Server Management Studio工具,發現這個Clustered Index只能刪除,不能通過界面進行修改。這讓人誤以為在主鍵上只能建立Clustered Index, 實際上卻不是這樣的。 如果通過Script 創建,我們可以指定在主鍵上建立Clustered / Non-Clustered Index。示例如下: CREATE TABLE [dbo].[table_1]( [id] [int] NOT NULL, PRIMARY KEY ( [id] ASC )) CREATE TABLE [dbo].[table_2]( [id] [int] NOT NULL, PRIMARY KEY NONCLUSTERED ( [id] ASC )) table_1 上將默認建立Clustered Index, table_2則建立的是Non Clustered Index。 對於已經建立主鍵的Table,如果要改成Non Clustered Index, 可以先刪除主鍵,再重新創建成Non Clustered Index ALTER TABLE [dbo].[table_1]DROP CONSTRAINT PK__table_1__3213E83F3C0AD43D go ALTER TABLE [dbo].[table_1] ADD CONSTRAINT PK__table_1__3213E83F3C0AD43D PRIMARY KEY NONCLUSTERED (id) go 在創建Table的時候,也可以同時設定一個欄位為主鍵,而另外一個欄位是Clustered index. CREATE TABLE [dbo].[table_3] (id INT NOT NULL PRIMARY KEY, col1 INT NOT NULL UNIQUE CLUSTERED) go 綜上所述,主鍵只是一個Constraint, 主鍵上能夠建立Clustered / Non-Clustered Index, 當然通用的最佳實踐是把主鍵創建為Clustered Index。 --------------------- 作者:Cassaba 來源:CSDN 原文:https://blog.csdn.net/cassaba/article/details/52043058 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!