网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle数据库中如何使用超过2G的.
.为最佳性能而调优 Red Hat(3).
.oracle中用创建表时Storage中参数.
.使用Web服务虚拟化Oracle数据库.
.Oracle9i初始化参数中文说明(5).
.优化调整Oracle 8i数据库系统.
.cube子句的用法.
.Oracle 8x中监控sysdba角色用户登.
.ORACLE的日志管理.
.如何连接 Oracle 及故障解决办法.
.字符集转换的exp/imp试验二.
.让我们一起学做业余DBA!.
.用户管理的备份.
.oracle中获取表空间ddl语句.
.Install Oracle 9i/10g On RHEL .
.Oracle9i資料庫管理實務講座(一).
.讲解Oracle里抽取随机数的多种方.
.Oracle关于时间/日期的操作.
.系统设定常用指令(1).
.Spring调用Oracle存储过程结果小.

在标识列里插入特定的值

发表日期:2008-2-9



  尽管你可以对标识列(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,但是假如再插入一个已有的值的话,你还是会看到错误消息。
上一篇:用CREATE TABLE陈述式声明计算数据列 人气:653
下一篇:采样数据库连接数 人气:629
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐