SQL Server 使用 IDENTITY 屬性實現自動遞增編號(類似 Access 的 AutoNumber)。本文涵蓋 GUI 設定、建表語法、修改種子與遞增值、重置計數器、以及常見誤區。
ID 欄位(資料型別 int)CREATE TABLE YourTable (
ID INT IDENTITY(1,1) NOT NULL, -- 種子=1, 遞增=1
OtherColumns...
)
參數說明:IDENTITY(Seed, Increment)
Seed:起始值Increment:遞增值許多開發者嘗試:
-- 錯誤語法!SQL Server 不支援
ALTER TABLE YourTable ALTER COLUMN ID IDENTITY(1,1)
原因:IDENTITY 只能在 CREATE TABLE 或 ALTER TABLE ... ADD COLUMN 時指定,無法事後修改既有欄位。
方案 A:新增自動編號欄位
ALTER TABLE YourTable ADD NewID INT IDENTITY(1,1)
方案 B:重建表(保留資料)
INSERT INTO NewTable SELECT * FROM OldTable重置自動編號下一個值:
-- 下一筆資料 ID 從 101 開始
DBCC CHECKIDENT ('YourTable', RESEED, 100)
💡 若表已清空,RESEED, 0 可讓下一筆從 1 開始。
Access 可用 COUNTER 型別或 AUTOINCREMENT 關鍵字,並支援 ALTER COLUMN ... COUNTER(新起始值, 新遞增值) 修改既有欄位,**但 SQL Server 不支援此語法**。
| 功能 | SQL Server | Access |
|---|---|---|
| 建表指定自動編號 | IDENTITY(1,1) | AUTOINCREMENT / COUNTER |
| 修改既有欄位為自動編號 | ❌ 不支援 | ✅ ALTER COLUMN ... COUNTER |
| 重置計數器 | DBCC CHECKIDENT | ALTER COLUMN ... COUNTER(1,1) |