資料庫主鍵自增插入顯示值

來源:互聯網
上載者:User

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

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



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.