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

SQL Server 2008 SSMS 設定主鍵與自動遞增 (Identity) 圖文教學

     編輯:關於SqlServer

設定主鍵

  1. 物件總管:右鍵目標表 → 設計
  2. 2. 點選欲設為 PK 的欄位列 (可 Ctrl+點選多欄位建立複合鍵)
  3. 右鍵 → 設定主鍵 (或工具列鍵圖示)
  4. 欄位左側出現 鍵圖示,表示已設為 PK
  5. 儲存表 (Ctrl+S)

設定 Identity 自動遞增

    1. 在設計師中點選 PK 欄位 (通常為 ID 或 Id)
  1. 下方 欄位屬性 區域,展開 識別規格
  2. 是身分識別欄位:否 → 改為 是
  3. 識別種子:1 (起始值)
  4. 識別遞增:1 (遞增值)
  5. 其他保持預設 → 儲存表

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 需配合批次大小控制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved