网络编程
位置:首页>> 网络编程>> 数据库>> SQL 中主标识列IDENTITY使用技巧

SQL 中主标识列IDENTITY使用技巧

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

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

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

0
投稿

猜你喜欢

  • 请问如何使用CDONTS组件来发送电子邮件?我们可以在IIS4下使用CDONTS来完成。首先要确认是否安装了SMTP服务(OPTIONPAC
  • CacheControl 属性设置是否可缓存由 ASP 生成的输出。默认地,代理服务器不会保持缓存副本。语法:response.CacheC
  • 因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的
  • 随滚动条移动的DIV层js代码,无论你的滚动条到哪里这个DIV层就跟到哪里!代码中例举了五个方向的滚动div层例子:包括左上方的div,左下
  • 任何熟悉SQL和关系数据库的人都遇见过大量的连接类型。最简单的说,连接(join)会把两个表的内容组合到一个虚拟表或者recordset内。
  • Web 标准要求一览表Russ WeakleyJjgod Jiang14-Aug-2004目录1 Web 标准,不仅仅是“不用表格的站点”2
  • 1、先介绍如何用PHP连上数据库(数据库用户名“root”,密码“sun”,有库“myguestbook”) 图62、PHP和My
  • 时间格式化函数,代码简单但较实用代码很简单,谁都能看懂Function fmstr(str, str1, Lens) Dim str2For
  • sql server中变量要先申明后赋值:局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的);申明局部变量语法:d
  • 1、并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DLL。2、在属性窗
  • 以下以 IE 代替 Internet Explorer,以 MF 代替 Mozzila FF1. document.form.item 问题
  • 一,fso.GetFile提取文件相应的 File 对象1,getfile.asp<%whichfile=Serv
  • 远程连接access数据库的几个方法: 1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接
  • CSS布局中可以用javascript判断浏览器版本看如下的javascript脚本: if (window.XMLHt
  • MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列
  • 什么是事件代理(Event Delegation)?如果不太了解的朋友,可详细阅读:《Event delegation in JavaScr
  • Bit-Packed Data TypesMySQL有一些存储类型使用一个值中的一些单个的比特位来紧凑的存储数据。纯技术上将,不管是底层的存
  • 瞬间设计是什么?良好的用户体验,全在于那些完美的瞬间。在第一个瞬间,假设当一位用户从购物搜索结果页面跳转到某个店铺的时候,他此刻可能是想看看
  • 听说 FaceBook 开放其网站的代码了,期前也算是了解过 FaceBook 的架构,所以重点就是看其代码的质量。可以毫不夸张的说,Fac
  • Innodb:[fb]# ll -hs url_comment_*.ibd633M -rw-rw---- 1 mysql mysql 632
手机版 网络编程 asp之家 www.aspxhome.com