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,才能夠插入!
--- --- 路漫漫其修遠兮,吾將上下而求索