設定主鍵
- 物件總管:右鍵目標表 → 設計
2. 點選欲設為 PK 的欄位列 (可 Ctrl+點選多欄位建立複合鍵)
- 右鍵 → 設定主鍵 (或工具列鍵圖示)
- 欄位左側出現 鍵圖示,表示已設為 PK
- 儲存表 (Ctrl+S)
設定 Identity 自動遞增
1. 在設計師中點選 PK 欄位 (通常為 ID 或 Id)
- 下方 欄位屬性 區域,展開 識別規格
- 是身分識別欄位:否 → 改為 是
- 識別種子:1 (起始值)
- 識別遞增:1 (遞增值)
- 其他保持預設 → 儲存表
T-SQL 等效指令
-- 建表時同時設定 PK + IDENTITY
CREATE TABLE dbo.MyTable (
ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
Name NVARCHAR(50) NOT NULL
);
-- 既有表新增 IDENTITY (需重建欄位,參考文章 19987)
-- 既有表新增 PK
ALTER TABLE dbo.MyTable ADD CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (ID);
Identity 關鍵屬性
| 屬性 | 說明 | 設計師對應 |
| Seed | 第一個值 | 識別種子 |
| Increment | 遞增間距 | 識別遞增 |
| Not For Replication | 合併式複寫時不產生值 | 無圖形介面 |
常見操作
-- 取得最後插入的 Identity 值 (Scope 安全)
SELECT SCOPE_IDENTITY();
-- 允許手動插入 Identity 值
SET IDENTITY_INSERT dbo.MyTable ON;
INSERT INTO dbo.MyTable (ID, Name) VALUES (100, '指定ID');
SET IDENTITY_INSERT dbo.MyTable OFF;
-- 重新播種 (重設下一個值)
DBCC CHECKIDENT ('dbo.MyTable', RESEED, 1000); -- 下一筆為 1001
-- 查詢目前 Identity 值
DBCC CHECKIDENT ('dbo.MyTable', NORESEED);
注意事項
- 每張表僅能有一個 Identity 欄位
- Identity 不保證連續 (交易回滾、刪除會造成間隙)
- 複寫環境需注意
Not For Replication 設定
- 大量匯入資料時,
SET IDENTITY_INSERT ON 需配合批次大小控制