国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

Set IDENTITY_INSERT的用法

2024-08-31 01:02:30
字體:
來源:轉載
供稿:網(wǎng)友
今天想往數(shù)據(jù)庫中插入一些數(shù)據(jù),包括標識列,可老是插入失敗,提示IDENTITY_INSERT設置為off,不能插入顯示數(shù)據(jù),后來試了幾種方法,老是失敗,如:
select * from goods
sp_help goods
exec sp_dboption lei
--有錯exec sp_dboption 'IDENTITY_INSERT' true
--有錯alter database lei set identity_insert on
--有錯exec(set   identity_insert   '+@貨號+'   on )
后來突然間腦門一亮,哎,不就是這句話么,set identity_insert <表名> on
在此也給大家推薦一下Set IDENTITY_INSERT的用法
1.首先看一看微軟幫助上的說法
SET IDENTITY_INSERT
允許將顯式值插入表的標識列中。

語法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }

參數(shù)
database

是指定的表所駐留的數(shù)據(jù)庫名稱。

owner

是表所有者的名稱。

table

是含有標識列的表名。

注釋
任何時候,會話中只有一個表的 IDENTITY_INSERT 屬性可以設置為 ON。如果某個表已將此屬性設置為 ON,并且為另一個表發(fā)出了 SET IDENTITY_INSERT ON 語句,則 Microsoft® SQL Server? 返回一個錯誤信息,指出 SET IDENTITY_INSERT 已設置為 ON 并報告此屬性已設置為 ON 的表。

如果插入值大于表的當前標識值,則 SQL Server 自動將新插入值作為當前標識值使用。

SET IDENTITY_INSERT 的設置是在執(zhí)行或運行時設置,而不是在分析時設置。


2.我對SET IDENTITY_INSERT用法及理解
2.1這個是干什么用的?
SET IDENTITY_INSERT [TABLENAME] {ON|OFF}從字面的意思看是用來在插入主鍵時設置主鍵狀態(tài)的。這個主鍵指的是自增長的主鍵。
2.2使用方法
2.2.1首先,這條語句只對自增長的主鍵生效,經(jīng)過在查詢分析器上的試驗,如果主鍵不為自增長類型會報如下錯誤:

服務器: 消息 8106,級別 16,狀態(tài) 1,行 1
表 'test1' 沒有標識屬性。無法執(zhí)行 SET 操作。

也是說他和自增長這個標識有關系。

2.2.2其次,這條語句是用在“執(zhí)行時或運行時,而不是分析時”。根據(jù)我的理解,我認為意思是,當存儲過程或是sql語句執(zhí)行時執(zhí)行,而不是在建立表的分析時執(zhí)行。他的執(zhí)行可以永久的改變狀態(tài),但是查看主鍵的狀態(tài)時卻不發(fā)生變化。雖然展示找不到他把這個狀態(tài)存儲在哪里,但我想,應該存儲在系統(tǒng)表中。

2.2.3這是我在查詢分析器上做了試驗的幾條語句:
2.2.3-1表test1,有非自增長字段id(int),v(char),執(zhí)行insert into wangwh.dbo.test1 (id,v)values(1,'test'),結果為:

服務器: 消息 8106,級別 16,狀態(tài) 1,行 1
表 'test1' 沒有標識屬性。無法執(zhí)行 SET 操作。

2.2.3-2表test,有自增長字段id(int),v(char),將下邊的語句分開執(zhí)行。
//直接插入一條數(shù)據(jù)
insert into wangwh.dbo.test (id,v)values(1,'test')將提示

服務器: 消息 544,級別 16,狀態(tài) 1,行 1
當 IDENTITY_INSERT 設置為 OFF 時,不能向表 'test1' 中的標識列插入顯式值。

//進行SET IDENTITY_INSERT 設置后,插入1條數(shù)據(jù)
set identity_insert wangwh.dbo.test1 on
insert into wangwh.dbo.test1 (id,v)values(1,'test')將提示
set identity_insert wangwh.dbo.test1 off
(所影響的行數(shù)為 1 行)

2.2.3-3如果將狀態(tài)設置on的話將可以一直插入如果不希望一直能插入的話,還需要進行off的設置。因為一旦狀態(tài)設置為on那么下次插入時就必須連同ID一起插入,否則就會報出如下錯誤:

服務器: 消息 545,級別 16,狀態(tài) 1,行 1
當 IDENTITY_INSERT 設置為 ON 時,必須指定表 'test1' 中標識列的顯式值。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 运城市| 浙江省| 永登县| 贵港市| 永仁县| 邛崃市| 德阳市| 营口市| 浦城县| 九江市| 澄迈县| 滁州市| 阿巴嘎旗| 祥云县| 彭山县| 翁牛特旗| 隆安县| 沧州市| 东莞市| 喀什市| 六枝特区| 武功县| 富顺县| 临沭县| 砀山县| 皮山县| 兴安县| 康保县| 德保县| 德令哈市| 腾冲县| 昂仁县| 滦南县| 万载县| 越西县| 砚山县| 龙州县| 柳州市| 临漳县| 南靖县| 富宁县|