SQL 中主标识列IDENTITY使用技巧

来源:Asp之家 时间:2011-06-02 08:47:00 

文通过一个操作实例来说明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,且复制数据时必须显示的表明字段名。

标签:SQL,数据表,主标识列,IDENTITY
0
投稿

猜你喜欢

  • javascript彩虹圈效果

    2011-08-05 19:10:45
  • SqlServer 索引自动优化工具

    2012-10-07 10:41:09
  • ASP中的全角和半角之间的转化

    2008-06-06 13:34:00
  • Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

    2009-11-05 21:45:00
  • 分析与比较五种MySQL数据库可靠性方案

    2009-07-30 08:25:00
  • SQL 统计一个数据库中所有表记录的数量

    2012-01-29 18:21:36
  • 在ASP中改善动态分页的性能

    2008-05-08 14:27:00
  • 安装PHP遇到“无法载入mysql扩展”解决方法

    2007-06-15 15:04:00
  • 网页版面布局的方法及技巧

    2007-10-29 12:41:00
  • 教你快速了解公共MySQL的数据库服务器层

    2008-12-17 17:10:00
  • SQL Server 数据库操作实用技巧锦集

    2009-01-20 13:20:00
  • asp如何获知页面上的图象的实际尺寸?

    2009-11-24 20:50:00
  • 常用ASCII 码对照表

    2007-08-21 14:35:00
  • 一些建站常用简单html代码

    2008-06-01 13:17:00
  • MYSQL教程:my.cnf缓存优化

    2009-07-30 08:58:00
  • ASP从数据库中获取下载文件

    2007-10-06 21:17:00
  • 浅淡BANNER设计

    2010-09-25 18:37:00
  • MySQL 集群配置

    2009-04-20 14:15:00
  • 在MySQL数据库中如何来复位根用户的密码

    2008-12-03 16:57:00
  • mysql: 安装后的目录结构

    2011-03-08 09:46:00
  • asp之家 网络编程 m.aspxhome.com