CREATE TABLE MyTable (
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, -- 種子=1, 遞增=1
Col1 VARCHAR(50),
Col2 INT
);
IDENTITY(seed, increment) 僅支援整數型別-- Access 專用
CREATE TABLE MyTable (ID COUNTER(1000,10) PRIMARY KEY, ...);
ALTER TABLE MyTable ALTER COLUMN ID COUNTER(2000,50);
ALTER TABLE MyTable ALTER COLUMN ID COUNTER(1,1); -- 重置空表
SQL Server 不支援 COUNTER 型別與 ALTER COLUMN 變更 IDENTITY。
依 MSDN 定義,ALTER COLUMN 僅能變更:資料類型、精度、排序規則、NULL/NOT NULL、ROWGUIDCOL。IDENTITY 屬性不在可變更清單中。
只能用 ALTER TABLE ... ADD 新欄位 INT IDENTITY(1,1) 新增自動編號欄位,無法將既有欄位改為 IDENTITY。
-- 查看目前識別值
DBCC CHECKIDENT ('MyTable', NORESEED);
-- 重設下一個值為 101(目前值設為 100)
DBCC CHECKIDENT ('MyTable', RESEED, 100);
-- 重設為 1(資料表必須為空,或 TRUNCATE 後)
TRUNCATE TABLE MyTable;
DBCC CHECKIDENT ('MyTable', RESEED, 0); -- 下一筆將是 1
NOT FOR REPLICATION 選項防止訂閱端同步時產生衝突UNIQUEIDENTIFIER + NEWID() 或 NEWSEQUENTIALID() 取代 IDENTITYIDENTITY(1,1)ALTER COLUMN 修改 IDENTITY,需重建表DBCC CHECKIDENT,配合 TRUNCATE 最乾淨NOT FOR REPLICATION 或改用 GUID