| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2751 人关注过本帖
标题:[原创]我的有关indentity属性的体会
只看楼主 加入收藏
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
结帖率:40%
收藏
 问题点数:0 回复次数:0 
[原创]我的有关indentity属性的体会
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 的设置是在执行或运行时设置,而不是在分析时设置。
??
??
??2.我对SET IDENTITY_INSERT用法及理解
??2.1这个是干什么用的?
??SET IDENTITY_INSERT [TABLENAME] {ON|OFF}从字面的意思看是用来在插入主键时设置主键状态的。这个主键指的是自增长的主键。
??2.2使用方法
??2.2.1首先,这条语句只对自增长的主键生效,经过在查询分析器上的试验,如果主键不为自增长类型会报如下错误:
??
??服务器: 消息 8106,级别 16,状态 1,行 1
??表 'test1' 没有标识属性。无法执行 SET 操作。
??
??也是说他和自增长这个标识有关系。
??
??2.2.2其次,这条语句是用在“执行时或运行时,而不是分析时”。根据我的理解,我认为意思是,当存储过程或是sql语句执行时执行,而不是在建立表的分析时执行。他的执行可以永久的改变状态,但是查看主键的状态时却不发生变化。虽然展示找不到他把这个状态存储在哪里,但我想,应该存储在系统表中。
??
??2.2.3这是我在查询分析器上做了试验的几条语句:
??2.2.3-1表test1,有非自增长字段id(int),v(char),执行insert into wangwh.dbo.test1 (id,v)values(1,'test'),结果为:
??
??服务器: 消息 8106,级别 16,状态 1,行 1
??表 'test1' 没有标识属性。无法执行 SET 操作。
??
??2.2.3-2表test,有自增长字段id(int),v(char),将下边的语句分开执行。
??//直接插入一条数据
??insert into wangwh.dbo.test (id,v)values(1,'test')将提示
??
??服务器: 消息 544,级别 16,状态 1,行 1
??当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'test1' 中的标识列插入显式值。
??
??//进行SET IDENTITY_INSERT 设置后,插入1条数据
??set identity_insert wangwh.dbo.test1 on
??insert into wangwh.dbo.test1 (id,v)values(1,'test')将提示
??set identity_insert wangwh.dbo.test1 off
??(所影响的行数为 1 行)
??
??2.2.3-3如果将状态设置on的话将可以一直插入如果不希望一直能插入的话,还需要进行off的设置。因为一旦状态设置为on那么下次插入时就必须连同ID一起插入,否则就会报出如下错误:
??
??服务器: 消息 545,级别 16,状态 1,行 1
??当 IDENTITY_INSERT 设置为 ON 时,必须指定表 'test1' 中标识列的显式值。
如果你想麻烦一点,也可以自己写函数搞定,获取当前的ID号,然后插入的时候,就可以ID=GetId+1,hehe,行了
搜索更多相关主题的帖子: indentity SQL Microsoft IDENTITY 属性 
2006-12-25 17:27
快速回复:[原创]我的有关indentity属性的体会
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014290 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved