专业做网站的公司
十二年网站模板设计制作经验,为你提供建站、网站设计、手机网站制作、微网站建设,我们专注高端、营销、企业官网、响应式网站建设、SEO优化、托管以及年度运维等为企业客户提供一站式网站解决方案
企业网站
外贸建站
行业网站
商城网站
当前位置: 首页 > 网站推广 > 详细内容

SQL 中主标识列IDENTITY使用技巧

时间:2019-08-18

本文通过一个操作实例来说明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

在这一互联网普及化的时期,企业或单独的个人针对网站基本建设的要求日渐扩大。那麼,针对网…

一家网站是否能做得出色,关键在于体验,是一种由内向外散发的魅力,可能表现为公司形象,一…

凡是正常经营的企业,基本上都会设计制作自己公司的网站。品牌形象和企业概况通过网站向人们…

在这一互联网普及化的时期,企业或单独的个人针对网站基本建设的要求日渐扩大。那麼,针对网…
网站基本建设如何收费标准?网站做为如今公司开展知名品牌塑造和宣传策划最关键的方式之一,…
网址生产制造发布后就必须网站站长平时网址维护了,但是绝大多数网站站长及其企业都不清楚如…
TOP