Pages

Primary Key to clustered Index

Mar 20, 2015
PowerDesigner CDM 針對 SQL Server 2012 選擇 PDM 後 , 預設的 Primary Key 屬性頁面中 Cluster 沒有勾選,如下圖
image


產生 Script 是 nonclustered,例如:
create table TABLE001 (
    MYCOL1          char(10)             not null,
    constraint PK_TABLE001 primary key clustered (MYCOL1)

)
go

照理應可以去調整 DBMS,讓產生 PDM 時預設可以將這屬性為勾選的狀態。
不過,筆者尚未找到正確的作法,折衷作法有兩個,第一是將 PDM 中逐一將每個 Table 的 Primary Key 屬性設定為勾選,下回從新產生 PDM 時,會保留住修改過的設定值。

另一個作法是調整 DBMS 在產生 Script 時,都統一產生 Clustered Index,步驟如下:
1. Tools > Resources > DBMS > Microsoft SQL Server 2012
image
2. Script > Objects > PKey > Add,將右側 Value 原本是
[constraint %CONSTNAME% ]primary key [%CLUSTER%?[%R%?[clustered ]]:nonclustered ](%PKEYCOLUMNS%)
       [%OPTIONS%]

修改為
[constraint %CONSTNAME% ]primary key [clustered ](%PKEYCOLUMNS%)
       [%OPTIONS%]

2. Script > Objects > PKey > Create,將右側 Value 原本是
alter table [%QUALIFIER%]%TABLE%[%R%?[ with nocheck][ with check]]
    add [constraint %CONSTNAME% ]primary key [%CLUSTER%?[%R%?[clustered ]]:nonclustered ](%PKEYCOLUMNS%)
       [%OPTIONS%]

修改為
alter table [%QUALIFIER%]%TABLE%[%R%?[ with nocheck][ with check]]
    add [constraint %CONSTNAME% ]primary key [clustered ](%PKEYCOLUMNS%)
       [%OPTIONS%]