手机版

SQL Server从增长的列中插入指定值教程

时间:2021-08-04 来源:互联网 编辑:宝哥软件园 浏览:

类型:数据库类大小:40.7M语言:中文评分:6.6标签:立即下载要将值插入自动编号(或IDENTITY列),需要设置set设置IDENTITY_INSERT

示例:

1.首先,建立一个带有标识列的表:

创建表产品(id int IDENTITY主键,产品varchar(40))

2.尝试在表格中执行以下操作:

插入产品(id,产品)值(3,“花园铲”)

结果是一个错误:“当IDENTITY_INSERT设置为OFF时,您不能在表‘products’的IDENTITY列中插入显式值。”

3.使用:

将标识_插入产品设置为开

插入产品(id,产品)值(1,“花园铲”)

返回正确。

4.创建另一个表products2,并尝试相同的插入操作:

创建表产品2 (id int IDENTITY主键,产品varchar(40))

然后执行:

打开标识_插入产品2

插入产品2 (id,产品)值(1,“花园铲”)

错误:“表“material.dbo.products”的IDENTITY_INSERT已打开。无法对表“products2”执行SET操作。

替换为实施:

关闭标识_插入产品

打开标识_插入产品2

插入产品2 (id,产品)值(2,“花园铲”)

执行通过。

5.尝试以下方法:

打开标识_插入产品2

插入产品2从产品中选择*

导致错误:“只有在使用列列表并且IDENTITY_INSERT为ON时,才能为表“products2”中的标识列指定显式值。”

6.替换为:

打开标识_插入产品2

插入产品2(标识,产品)从产品中选择*

执行通过。

总结:

1.在每个连接会话中的任何时候,都只能为一个表设置IDENTITY_INSERT ON,该设置仅对当前会话有效;

2.插入标识列时,必须列出该标识列(当然,还需要列出其他相关列)。

附件:

SQL Server帮助文档的相关内容

设置标识_插入

允许将显式值插入表的标识列。

语法

设置标识_插入[数据库。[所有者。] ] {表格} {开|关}

参数

资料库

指定表所在的数据库的名称。

物主

表所有者的名称。

桌子

包含标识列的表的名称。

笔记

在任何时候,会话中只有一个表可以将其IDENTITY_INSERT属性设置为on。如果某个表将此属性设置为“开”,并且为另一个表发出了“设置标识_插入开”语句,则Microsoft SQL Server将返回一条错误消息,指示“设置标识_插入”已设置为“开”,并报告此属性设置为“开”的表。

如果插入的值大于表的当前标识值,SQL Server将自动使用新插入的值作为当前标识值。

SET IDENTITY_INSERT是在执行或运行时设置的,而不是在分析时。

许可

默认情况下,执行权限授予sysadmin固定服务器角色、db_owner和db_ddladmin固定数据库角色和对象所有者。

例子

下面的示例创建了一个带有标识列的表,并显示了如何使用SET IDENTITY_INSERT设置来填充由DELETE语句导致的标识值中的空白。

-创建产品表。CREATE TABLE产品(id int IDENTITY PRIMARY KEY,product varchar(40)) GO -将值插入产品表。插入产品(产品)值(“螺丝刀”)插入产品(产品)值(“锤子”)插入产品(产品)值(“锯”)插入产品(产品)值(“铲”)GO -在身份值中创建一个缺口。删除产品,其中产品=“看到”GO选择*从产品GO -尝试插入一个明确的标识值3;-应该返回警告。插入产品(id,产品)值(3,“花园铲”)GO - SET IDENTITY_INSERT设为ON。设置标识_插入产品开始-尝试将明确的标识值3插入产品(标识,产品)值(3,“花园铲”)。GO SELECT * FROM products GO - Drop产品表。直板产品

版权声明:SQL Server从增长的列中插入指定值教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。