当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 在SQL Server数据库中为标识(IDENTITY)列插入显式值

MSSQL
在SQL Server 2005数据库中更改数据架构
建立适当的索引是实现查询优化的首要前提
巧用一条SQL 实现其它进制到十进制转换
处理SQL Server 2000的命名实例和多实例
解析:怎样掌握SQL Server中的数据查询
教你轻松掌握常用的子句、关键词和函数
如何获取SQL Server数据库元数据的方法
分析SQL Server中数据库的快照工作原理
汇总数据库备份 还原 压缩与数据库转移的方法
完全讲解 使用MSCS建立SQL Server集群
SQL Server 2005 内置工具建审查系统
在SQL Server计算机上运行病毒扫描软件
教你如何升级SQL Server数据库系统
SQL Server中处理空值时涉及的三问题
教你为SQL Server数据库构造安全门
在SQL Server中编写通用数据访问方法
针对SQL Server中业务规则链接的分析
运行SQL Server的计算机间移动数据库
怎样在不同版本SQL Server中存储数据
认识那些被忽略的SQL Server注入技巧

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 351 ::
收藏到网摘: n/a

SQL Server中的标识列和ACCESS中的“自动编号”相似,都是插入记录的时候自动生成,一般不允许也不需要我们去手动修改它。如果我们在标识列中插入值,例如:
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 其实可以省略,因为会话完毕后,这个开关就自动关上了。