使用 PowerDesigner (PD) 導出 SQL Server 2000 建表腳本時,常發現主鍵與自增屬性遺失。主因在於 PD 產生的腳本未正確標註 IDENTITY 與 PRIMARY KEY 約束。本文提供「逆向工程修正法」:先由資料庫匯出標準腳本,修正後再導入 PD,確保模型與資料庫定義一致。
PD 直接導出的腳本:
CREATE TABLE T_SA_FIELD (
SAFIELDRECID INT NULL, -- 應為主鍵自增
SARECID INT NULL,
FIELDNAME VARCHAR(100) NULL,
FIELDTYPE DECIMAL NULL
)
缺少 IDENTITY(1,1)、PRIMARY KEY 約束與 ON [PRIMARY] 檔案群組指定。
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID('DBO.T_SA_FIELD') AND TYPE = 'U')
DROP TABLE DBO.T_SA_FIELD
GO
CREATE TABLE DBO.T_SA_FIELD (
SAFIELDRECID INT IDENTITY(1, 1),
SARECID INT NULL,
FIELDNAME VARCHAR(1000) NULL,
CONSTRAINT PK_T_SA_FIELD PRIMARY KEY (SAFIELDRECID) ON [PRIMARY]
) ON [PRIMARY]
GO
.sql 檔。.sql 檔。| 項目 | PD 直接導出 | 逆向工程修正後 |
|---|---|---|
| 主鍵欄位 | INT NULL | INT IDENTITY(1,1) |
| 主鍵約束 | 無 | CONSTRAINT PK_... PRIMARY KEY |
| 擁有者前綴 | 無(T_SA_FIELD) | DBO.T_SA_FIELD |
| 檔案群組 | 無 | ON [PRIMARY] |
.sql 納入 Git,PDM 檔亦納入版控,確保模型與腳本同步演進。❌ 直接手動修改 PD 導出腳本 → 易遺漏、難維護、模型與腳本脫節。
✅ 以資料庫真實定義為準,逆向回 PD → 模型永遠與實體同步。