SQL Server Compact Edition (SQL CE) 不支援獨立的 CREATE INDEX 陳述式,複合唯一索引需在 CREATE TABLE 時透過 CONSTRAINT 定義。
CREATE TABLE [PT_check3] (
[FCheckPlan_ID] NVARCHAR(20) NOT NULL,
[FBarCode] NVARCHAR(20) NOT NULL,
[FIn_Code] NVARCHAR(10) NOT NULL,
[FGoodsName] NVARCHAR(30) NOT NULL,
[FIsReCheck] INT NULL,
[FQty] NUMERIC(10, 2) NULL,
CONSTRAINT [PK_vw_Checks] UNIQUE ([FCheckPlan_ID], [FIn_Code])
);
| 項目 | 說明 |
|---|---|
| CONSTRAINT 名稱 | PK_vw_Checks - 建議命名規範:UQ_TableName_Col1_Col2 或 PK_TableName (若為主鍵) |
| UNIQUE | 建立**非叢集唯一索引**,確保 FCheckPlan_ID + FIn_Code 組合唯一 |
| 欄位順序 | 依查詢濾選順序排列:最常用於 WHERE/JOIN 的欄位放前面 |
| NOT NULL | 參與唯一索引的欄位建議設 NOT NULL,避免 NULL 唯一性語意模糊 |
CREATE INDEX、DROP INDEX、ALTER INDEX。ALTER TABLE ... ALTER COLUMN 間接觸發。
-- 標準 SQL Server 可獨立建立索引
CREATE TABLE dbo.PT_check3 (...);
CREATE UNIQUE NONCLUSTERED INDEX UQ_PT_check3_Plan_InCode
ON dbo.PT_check3 (FCheckPlan_ID, FIn_Code);