首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2008

SQL Server 2008 新增身分識別欄位實現自動遞增序號兩種方法

     編輯:SQL Server 2008

方法一:T-SQL 指令新增

ALTER TABLE 表名 ADD 欄位名 INT IDENTITY(1,1) NOT NULL;

IDENTITY(seed, increment) 參數說明:

  • seed (種子):起始值,預設 1
  • increment (遞增量):每次遞增值,預設 1
  • 範例:IDENTITY(100, 5) 表示從 100 開始,每次 +5(100, 105, 110...)

方法二:SSMS 圖形介面新增

  1. 物件總管展開資料庫 → 右鍵「資料表」→ 「新增資料表」
  2. 輸入欄位名稱,資料類型選 int
  3. 欄位屬性面板展開「身分識別規格」
  4. 設定:身分識別種子 = 1(起始值)、身分識別遞增 = 1(步長)
  5. 儲存資料表
新增資料表欄位 身分識別屬性設定

身分識別欄位關鍵特性

特性說明
唯一性不保證唯一(需搭配 PRIMARY KEY 或 UNIQUE 約束)
不可為 NULL隱含 NOT NULL
無法手動插入值需 `SET IDENTITY_INSERT 表名 ON` 才允許明確插入
間隙可能存在交易回滾、刪除資料會造成號碼跳號
重設種子`DBCC CHECKIDENT ('表名', RESEED, 新種子值)`
取得最新身分識別值`SCOPE_IDENTITY()`(推薦)、`@@IDENTITY`、`IDENT_CURRENT('表名')`

常見操作範例

-- 允許明確插入身分識別值
SET IDENTITY_INSERT dbo.Users ON;
INSERT INTO dbo.Users (UserID, UserName) VALUES (999, 'Admin');
SET IDENTITY_INSERT dbo.Users OFF;

-- 重設種子(下一筆將從 1000 開始)
DBCC CHECKIDENT ('dbo.Users', RESEED, 999);

-- 查詢當前種子值
DBCC CHECKIDENT ('dbo.Users', NORESEED);

SEQUENCE 物件(SQL Server 2012+ 推薦替代方案)

若使用 SQL Server 2012 或更新版本,建議考慮 SEQUENCE 物件:

  • 獨立於資料表,可跨多表共用
  • 支援循環、快取、範圍設定
  • 效能優於 IDENTITY(可預先配置快取值)
CREATE SEQUENCE dbo.Seq_UserID AS INT START WITH 1 INCREMENT BY 1;
-- 使用
INSERT INTO dbo.Users (UserID, UserName) VALUES (NEXT VALUE FOR dbo.Seq_UserID, 'NewUser');

總結

SQL Server 2008 以 IDENTITY 欄位實現自動遞增,T-SQL 與 SSMS 圖介兩種方式皆可。注意間隙特性、重設種子語法,以及 2012+ 版本可升級使用 SEQUENCE 獲得更強彈性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved