數據庫主鍵自增插入顯示值

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,才能夠插入!

--- --- 路漫漫其修遠兮,吾將上下而求索



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章