[MSSQL]新增特定的識別欄位值(Identity)

在MSSQL 要在有identity的Table中新增一筆資料時,

INSERT 的語法可以不指定識別欄位

但假如今天需要新增特別的編號時,應該怎麼辦?

假設Table長這樣

CREATE TABLE [dbo].[test](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Desc] [nvarchar](200) NULL,
 CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

一般要Insert 一筆新的資料的時候

只要這樣寫就可以了

INSERT INTO test VALUES('test1_IDENTITY','AUTO IDENTITY')

新增完後 TABLE中的資料

如果我現在需要新增一筆ID是0的呢?

特別注意需要指定TABLE的欄位(ID,[Name],[Desc]) 才有辦法INSERT

如果沒有指定欄位會收到MSSQL的警告訊息

訊息 8101,層級 16,狀態 1,行 12
位於資料表 'test' 的識別欄位其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。

  SET IDENTITY_INSERT test on 
  INSERT INTO test(ID,[Name],[Desc]) VALUES(0,'FAKE_IDENTITY','USE IDENTITY_INSERT');
  go
  SELECT * FROM test
  SET IDENTITY_INSERT test off ;
  go

這樣就完成了!!

記得用完要養成好習慣把 " IDENTITY_INSERT " 設為 off !!!

 

 

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你