中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
在标识列里插入特定的值
作者:佚名 时间:2004-07-10 10:40 出处:互连网 责编:chinaitpower
              摘要:在标识列里插入特定的值

  尽管你可以对标识列(identity column)的值及其任意值的用处有千条万条理由,但是和你共同工作的一些人会坚持在给定的表格里使用连续的主关键字(PK)。然后,当发票号丢失的时候,他们就会恐慌、害怕被起诉、掩盖错误,甚至更糟。
  
  为了解决这个问题,你可以创建一个带有标识列的表格,并用一些数据行来填充它:
  
  -- Create a test table.
  CREATE TABLE TestIdentityGaps
    (
      ID int IDENTITY PRIMARY KEY,
      Description varchar(20)
    )
  GO
  -- Insert some values. The word INTO is optional:
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('One')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Two')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Three')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Four')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Five')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Six')
  GO
  
  现在,删除几个数据行:
  
  DELETE TestIdentityGaps
  WHERE Description IN('Two', 'Five')
  
  在我们编写代码的时候,我们知道“二(Two)”和“五(Five)”这两个值丢了。我们想要插入两个数据行来填补这些空缺。两个简单的INSERT陈述式无法满足要求;但是,它们会在序列的结尾创建主关键字。
  
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Two Point One')
  INSERT [INTO] TestIdentityGaps (Description) VALUES ('Five Point One')
  GO
  SELECT * FROM TestIdentityGaps
  
  你也无法明确地设置标识列的值:
  
  -- Try inserting an explicit ID value of 2. Returns a warning.
  INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Two Point One')
  GO
  
  为了解决这个问题,SQL服务器2000用IDENTITY_INSERT来进行设置。为了强行插入一个带有特定值的数据行,你需要发出命令,然后在后面接上具体插入的内容:
  
  SET TestIdentityGapsON
  INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Two Point One')
  INSERT INTO TestIdentityGaps (id, Description) VALUES(5, 'Five Point One')
  GO
  SELECT * FROM TestIdentityGaps
  
  现在你可以看到新的数据行已经用指定的主关键字值插入了。
  
  注意:对IDENTITY_INSERT的设置可以在任何特定的时候用在数据库里的某个表格上。如果需要在一个或者多个表格里填补空缺,你就必须用具体的命令来明确地指明每个表格。
  
  你可以在一个带有标识列的表格里插入一个具体的值,但是要这样做的话,你必须首先把IDENTITY_INSERT的值设置为ON。如果你没有,你就会看到一条错误消息。即使你把IDENTITY_INSERT的值设置为了ON,但是如果再插入一个已有的值的话,你还是会看到错误消息。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有