本文通过一个操作实例来说明SQL中主标识列IDENTITY的使用技巧。
要求:在 sql server 2005中,建立数据表book,在表book中设有标识列,标识种子为1000,现要从另一个相同结构的表book1中导入数据,两表结构定义语句如下:
create table book (书号 int identity(1000,1) not for identity primary key clustered, 书名 char(20) not null, 出版社 char(20) check (出版社 in (’高教’,'浙大’,'电子’,'中央’)), 出版日期 datetime default (getdate()), 单价 numeric(7,2) check(单价>0), 数量 smallint check(数量>=0), 总价 AS 单价*数量, EMAIL varchar(20) check(EMAIL LIKE ‘%@%’) |
create table book1 (书号 int primary key clustered, 书名 char(20) not null, 出版社 char(20) check (出版社 in (’高教’,'浙大’,'电子’,'中央’)), 出版日期 datetime default (getdate()), 单价 numeric(7,2) check(单价>0), 数量 smallint check(数量>=0), 总价 AS 单价*数量, EMAIL varchar(20) check(EMAIL LIKE ‘%@%’) |
用如下语句来导入数据:
insert into book select * from book1 |
结果,系统报错为:
当使用了列列表并且IDENTITY_INSERT 为ON 时,才能为表‘book’中的标识列指定显式值。
问题1:SQL SERVER 2005中如何设置IDENTITY_INSERT的值为ON?
格式为:SET IDENTITY_INSERT TABLE_NAME ON/OFF
于是用下列语句
SET IDENTITY_INSERT book ON
Insert into book select * from book1 SET IDENTITY_INSERT book OFF |
结果出错提示与上面相同。为什么已经设置了表book的IDENTITY_INSERT为ON还出错呢?
重新输入指定列名的的语句:
insert into book(书号,书名) select 书号,书名 from book2 |
结果:系统提示成功运行。Book2中的记录按记录号的顺序插入到表book中。
结论:
这说明在主表定义标识列且加选项not for replication时,表示当通过复制向表中插入数据时,不需要遵循IDENTITY属性要求。 在复制数据时,要保证主表的IDENTITY_INSERT的状态为ON,且复制数据时必须显示的表明字段名。
来源:chinaz
本文网址:http://www.hongzhan188.com/article_79.html
本文由
沧龙科技
网发布(
http://www.hongzhan188.com
),如果您还想了解更多关于
多网站需要多少钱
的文章,请点击查看
企业网站制作
的其它文章,转发请注明来源及版权归属。
承接以下业务:传统网站改自适应网站、网站增加手机站、网站改全屏网站改大屏展示、GBK转UFT-8、DEDECMS转WORDPRESS、网站站群制作、企业网站设计、企业网站优化、网站托管等业务
网站设计制作和程序的开发: 如何做好网站设计构思:是你网站做好之后的页面,如何能打动客户在网站设计前设计师美工
现在建立网站门坎很低,销售市场上做1个网站价格不一样,高的过万,低的几百元钱就就行了,那麼究竟建立网站必须要多
李克强总理在明确提出互联网技术+以后,做一个企业网站已成每一公司所必须的了。那在现在网站制作企业满地全是,网站
管理员密码忘记,通过重新安装的密码更换数据库,或者通过md5加密密文替换数据库,都一一失败,这个问题困扰了很多人,
我们介绍了如何修改后台的登陆页面,这页我们来介绍下如何精简dede后台的功能 ,如果是做一般简单的企业站我们肯定是用
收集了一些常用的leapftp注册码,方便需要的时候使用: leapftp 2.7.6 注册码 , Name: Kmos/CiA in 1999 s/n: MOD1-MO2D-M3OD-NOPQ LeapFTP2.7.5 注