在SQL Server資料庫中為標識(IDENTITY)列插入顯式值

來源:互聯網
上載者:User

如果我們在識別欄位中插入值,例如:

insert member(id,username) values(10,'admin')

則在查詢分析器裡面會返回錯誤資訊:
引用內容
伺服器: 訊息 544,層級 16,狀態 1,行 1
當 IDENTITY_Insert 設定為 OFF 時,不能向表 'member' 中的識別欄位插入顯式值。

而在ASP程式中會返回錯誤資訊:
引用內容
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e14'

當 IDENTITY_Insert 設定為 OFF 時,不能向表 'member' 中的識別欄位插入顯式值。

test.asp,行 13

但有的情況我們需要手動插入識別欄位的值,例如刪除了一些記錄後,識別欄位並不連續,而我們又想把它補齊。我們利用一個開關可以讓願望變成現實:

SET IDENTITY_Insert [TableName] ON

在查詢分析器裡面這樣寫:

SET IDENTITY_Insert member ON
insert member(id,username) values(1,'admin')
SET IDENTITY_Insert member OFF

在ASP頁面可以這樣寫:

con.execute("SET IDENTITY_Insert member ON" & vbcrlf & "insert member(id,username) values(2,'abcde')" & vbcrlf & "SET IDENTITY_Insert member OFF")

使用該方法應該保證識別欄位沒有插入重複資料,要不然會返回錯誤,插入操作不會進行。SET IDENTITY_Insert [TableName] OFF 其實可以省略,因為會話完畢後,這個開關就自動關上了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.