栏目导航:首页 > 网络编程 > Mssql > 内容 在线投稿

SQL 中主标识列IDENTITY使用技巧

本文通过一个操作实例来说明SQL中主标识列IDENTITY的使用技巧。

墨者资讯www.cnmoker.org

要求:在 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 '%@%')

用如下语句来导入数据:

墨者资讯www.cnmoker.org

insert into book select * from book1 cnmoker.org

结果,系统报错为:

本文转载自墨者资讯网 墨者资讯网

当使用了列列表并且IDENTITY_INSERT 为ON 时,才能为表‘book’中的标识列指定显式值。

墨者资讯www.cnmoker.org

问题1:SQL SERVER 2005中如何设置IDENTITY_INSERT的值为ON?

本文来自墨者资讯

格式为:SET IDENTITY_INSERT TABLE_NAME ON/OFF

最好的it资讯站,最全面的it资讯,尽在墨者资讯网

于是用下列语句

本文来自墨者资讯

SET IDENTITY_INSERT book ON

本文转载自www.cnmoker.org 墨者资讯网

Insert into book select * from book1

墨者资讯,最新资讯

SET IDENTITY_INSERT book OFF 本文转载自墨者资讯网 墨者资讯网

结果出错提示与上面相同。为什么已经设置了表book的IDENTITY_INSERT为ON还出错呢? 内容来自墨者资讯

重新输入指定列名的的语句:

墨者资讯www.cnmoker.org

insert into book(书号,书名) select 书号,书名 from book2 墨者资讯www.cnmoker.org

结果:系统提示成功运行。Book2中的记录按记录号的顺序插入到表book中。 copyright cnmoker.orrg

结论: 本文转载自www.cnmoker.org 墨者资讯网

这说明在主表定义标识列且加选项not for replication时,表示当通过复制向表中插入数据时,不需要遵循IDENTITY属性要求。 在复制数据时,要保证主表的IDENTITY_INSERT的状态为ON,且复制数据时必须显示的表明字段名。 内容来自墨者资讯

感谢 王惠 的投稿 copyright cnmoker.orrg

来源:墨者资讯网-我们致力于做最全面的it资讯信息资料库
    TAG: IDENTITY_IN 标识 使用技巧 book check
    评论 | 推荐 | 挑错 | 责编:admin | 时间: 2011-07-14
    上一篇:SQL Server管理 这些你懂吗? 下一篇:没有了