SQL Server 2008?數據庫主鍵自增插入顯示值
前幾天在工作的時候遇到在刪除數據庫中表的數據的時候。刪除之后,又一次加入的數據沒有得到原來的數據的id值(表中id為主鍵,且設置為自增) ,使用的是SQL Server 2008 ,如今已解決,和大家分享一下!
詳細情況:
1.建立表t_test,設置主鍵自增,例如以下圖
2.向表中插入數據
? ?因為表中的主鍵字段id為自增在插入的時候不須要指定顯示插入。所以Sql 語句為
<span style="font-size:24px;">insert into [xxx].[dbo].[t_test] values ('xiaoming')
insert into [xxx].[dbo].[t_test] values ('hanmei')
insert into [xxx].[dbo].[t_test] values ('lilei')
insert into [xxx].[dbo].[t_test] values ('ligang')
insert into [xxx].[dbo].[t_test] values ('xiaozhi')</span>
再插入的時候并沒有指定顯示值id字段,數據庫會自己主動添加主鍵id值,數據庫中數據為:
3.刪除數據,又一次加入帶有顯示值的數據
<span style="font-size:24px;">delete [xxx].[dbo].[t_test] where id = 1</span>
插入帶有顯示值的數據: <span style="font-size:24px;">insert into [guagua_new_event_system_test].[dbo].[t_test] values (1,'xiaoming')</span>
數據庫提示: 消息 8101,級別 16,狀態 1,第 1 行
僅當使用了列列表而且 IDENTITY_INSERT 為 ON 時,才干為表'xxx.dbo.t_test'中的標識列指定顯式值。
又一次設置INDENTITY_INSERT為ON時,又一次重加,sql 語句為:
<span style="font-size:18px;"> SET IDENTITY_INSERT [xxx].[dbo].[t_test] ON?</span>
<span style="font-size:18px;"> insert into [xxx].[dbo].[t_test] values (1,'xiaoming')</span>
數據庫提示: 消息 8101。級別 16,狀態 1,第 2 行
僅當使用了列列表而且 IDENTITY_INSERT 為 ON 時,才干為表'xxx.dbo.t_test'中的標識列指定顯式值。
明明已經設置了INDENTITY_INSERT為ON,可是為什么還是沒有加入進去,看了SQL Server 2008的幫助文檔,才明確須要制定一一相應的列名在顯示插入的時候。
所以,正確的Sql 語句為:
<span style="font-size:18px;">SET IDENTITY_INSERT [xxx].[dbo].[t_test] ON
insert into [xxx].[dbo].[t_test](id ,name) values (1,'xiaoming')
SET IDENTITY_INSERT [xxx].[dbo].[t_test] OFF</span>
僅僅是在顯示插入值的時候的時候須要制定列名。同一時候打開同意顯示插入的INDENTITY_INSERT,才可以插入。
--- --- 路漫漫其修遠兮,吾將上下而求索