在SQL Server数据库中为标识(IDENTITY)列插入显式值

如果我们在标识列中插入值,例如:

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 其实可以省略,因为会话完毕后,这个开关就自动关上了。

时间: 2024-10-06 19:25:27

在SQL Server数据库中为标识(IDENTITY)列插入显式值的相关文章

在SQL Server数据库中为标识(IDENTITY)列插入显式值_MsSql

如果我们在标识列中插入值,例如: insert member(id,username) values(10,'admin') 则在查询分析器里面会返回错误信息:  引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值. 而在ASP程序中会返回错误信息:  引用内容 Microsoft OLE DB Provider for SQL Server 错误 '80040e14'  当 I

SQL SERVER 2000 中的标识值获取函数

server|函数 IDENTITY(标识)列,也有很多人称之为自增列,在SQL Server 2000中,标识列通过IDENTITY来定义,下面是与获取最后插入记录的标识值有关的函数的一个示例说明     SQL Server 中,可以使用 SCOPE_IDENTITY(). @@IDENTITY . IDENT_CURRENT() 来取得最后插入记录的值值,它们的区别在于:SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值.一个

sql-在Csharp中实现SQL Server数据库中的UniqueIdentifier数据类型

问题描述 在Csharp中实现SQL Server数据库中的UniqueIdentifier数据类型 实现对数据库的条件查询表结构:表数据示例:错误信息:1.2. 解决方案 你注意,一个是lid,一个是selllistno,不是一个字段,前者是guid 解决方案二: 你这个是流水号,一个string,不是guid,没法转,用string就可以了. 解决方案三: 解决方案四: uniqueidentifier数据类型可存储16字节的二进制值,其作用与全局唯一标记符(GUID)一样.GUID是唯一的

浅析SQL Server数据库中的伪列以及伪列的含义

原文:浅析SQL Server数据库中的伪列以及伪列的含义   本文出处:http://www.cnblogs.com/wy123/p/6833116.html      SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述.这里主要是提到的RowId引起了一点思考.那么,这个RowId是个什么玩意?能不能更加直观一点来看看

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的

SQL Server数据库中伪列及伪列的含义详解

SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述. 这里主要是提到的RowId引起了一点思考. 那么,这个RowId是个什么玩意?能不能更加直观一点来看看RowId的信息?代表什么含义?这个当然也是可以的. Oracle中的表中有一个伪列的概念,就是在查询表的时候加上select rowid,* from Table,会

Vb.net向sql server数据库中保存图片(一)

server|数据|数据库 预备知识:STREAM.ADO.NET 微软的SQL SERVER数据库的Image.text等字段都属于二进制的大对象.这些对象的存取和其他轻型对象略有不同.比如,我们打开一个数据表的时候,普通类型的字段都可以看见,而Image类型的字段却不行,只能通过编程的方法来读取.这篇资料就是介绍怎样用vb.NET来向sql server数据库中存放图片,怎样从数据库中取出图片浏览.我在这里也费了老大的精力,主要是为了答复一个同学的提问.(他刨根问底式的学习方式,把我急出一身

在SQL Server数据库中拆分字符串函数

SQL Server数据库中拆分字符串函数的具体方法: CREATE FUNCTION uf_StrSplit '1.1.2.50','.' (@origStr varchar(7000), --待拆分的字符串 @markStr varchar(100)) --拆分 标记,如',' RETURNS @splittable table ( str_id varchar(4000) NOT NULL, --编号ID string varchar(2000) NOT NULL --拆分后的字符串 )

ASP.NET中存取SQL Server数据库中的图片

SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型.下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法.在这篇文章中我们要看到如何在SQL Server中存储和读取图片. 1.建立一个表: 在SQL SERVER中建立这样结构的一个表: 列名 类型 目的 ID Integer 主键ID IMGTITLE Varchar(50) 图片的标题 IMGTYPE Varchar(50) 图片类型. ASP.NET要以辨认的类型 IMGDATA Imag