想要将值插入到活动编号中去,供给设定 SET IDENTITY_INSERT

示例:

1.第第一建工公司立一个有标志列的表:

代码如下复制代码 CREATE TABLE products (id int IDENTITY P景逸SUVIMARubiconY KEY,
product varchar(40卡塔尔国卡塔尔

2.尝试在表中做以下操作:

代码如下复制代码 INSERT INTO products (id, product卡塔尔(英语:State of Qatar) VALUES(3, ‘garden
shovel’卡塔尔国

结果会变成错误:当 IDENTITY_INSERT 设置为 OFF 时,无法向表 ‘products’
中的标记列插入显式值。

3.改用:

代码如下复制代码 SET IDENTITY_INSERT products ON INSERT INTO products
(id, product) VALUES(1, ‘garden shovel’)

回去正确。

4.创建此外三个表products2,尝试雷同插入操作:

代码如下复制代码 CREATE TABLE products2 (id int IDENTITY P揽胜IMA路虎极光Y KEY,
product varchar(40卡塔尔(قطر‎卡塔尔国

然后实行:

代码如下复制代码 SET IDENTITY_INSERT products2 ON INSERT INTO products2
(id, product) VALUES(1, ‘garden shovel’)

引致错误:表 ‘material.dbo.products’ 的 IDENTITY_INSERT 已经为
ON。无法对表 ‘products2’ 实行 SET 操作。

改为实践:

代码如下复制代码 SET IDENTITY_INSERT products OFF SET IDENTITY_INSERT
products2 ON INSERT INTO products2 (id, product) VALUES(2, ‘garden
shovel’)

实行通过。

5.品尝以下操作:

代码如下复制代码 SET IDENTITY_INSERT products2 ON INSERT INTO products2
SELECT * FROM products

招致错误:仅当使用了列的列表,而且 IDENTITY_INSERT 为 ON 时,工夫在表
‘products2’ 中为标记列钦定显式值。

永利皇宫登录网址 ,6.改为:

代码如下复制代码 SET IDENTITY_INSERT products2 ON INSERT INTO products2
(id, product) SELECT * FROM products

试行通过。

总结:

1.每叁遍一而再会话中的任有的时候刻,只可以对二个表安装IDENTITY_INSERT
ON,且设置只对当下对话有效;
2.在对标志列试行插入操作进,一定要列出此标记列。

附: SQL Server帮忙文书档案相关内容

代码如下复制代码 SET IDENTITY_INSERT

同意将显式值插入表的标志列中。

语法

代码如下复制代码 SET IDENTITY_INSERT [ database.[ owner.] ] { table
} { ON | OFF }

参数 database

是内定的表所驻留的数据库名称。

owner

是表全部者的名称。

table

是含有标志列的表名。

讲明 任几时候,会话中独有一个表的 IDENTITY_INSERT 属性能够安装为
ON。就算有些表已将此属性设置为 ON,何况为另贰个表发出了 SET
IDENTITY_INSERT ON 语句,则 Microsoft SQL Server 再次回到一个错误音讯,提出SET IDENTITY_INSERT 已安装为 ON 并告知此属性已设置为 ON 的表。

万意气风发插入值大于表的当前标记值,则 SQL Server
自动将新插入值作为当下标志值使用。

SET IDENTITY_INSERT 的安装是在实施或运营时设置,实际不是在分条析理时设置。

权力 实施权限私下认可给予 sysadmin 固定服务器剧中人物和 db_owner 及
db_ddladmin 固定数据库角色以至对象全部者。

示例 下例成立一个暗含标记列的表,并出示怎么接收 SET IDENTITY_INSERT
设置填充由 DELETE 语句招致的标记值中的空隙。

代码如下复制代码

— Create products table. CREATE TABLE products (id int IDENTITY PRIMARY
KEY, product varchar(40)) GO — Inserting values into products table.
INSERT INTO products (product) VALUES (‘screwdriver’) INSERT INTO
products (product) VALUES (‘hammer’) INSERT INTO products (product)
VALUES (‘saw’) INSERT INTO products (product) VALUES (‘shovel’) GO

— Create a gap in the identity values. DELETE products WHERE product =
‘saw’ GO

SELECT * FROM products GO

— Attempt to insert an explicit ID value of 3; — should return a
warning. INSERT INTO products (id, product) VALUES(3, ‘garden shovel’)
GO — SET IDENTITY_INSERT to ON. SET IDENTITY_INSERT products ON GO

— Attempt to insert an explicit ID value of 3 INSERT INTO products (id,
product) VALUES(3, ‘garden shovel’). GO

SELECT * FROM products GO — Drop products table. DROP TABLE products
GO

网站地图xml地图