Primary Key to clustered Index
PowerDesigner CDM 針對 SQL Server 2012 選擇 PDM 後 , 預設的 Primary Key 屬性頁面中 Cluster 沒有勾選,如下圖
產生 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
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%]
產生 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
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%]