在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 !!!
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你