在Oracle标识列里插入特定的值

数据库 Oracle
Oracle标识列是Oracle数据库中的重要概念,下文对在Oracle标识列里插入特定的值的方法作了详细的说明,希望对您能有所帮助。

Oracle标识列大家都有一些了解,下面就为您详细介绍在Oracle标识列里插入特定的值的实现方法,如果您对此方面感兴趣的 话,不妨一看。

尽管你可以对Oracle标识列(identity column)的值及其任意值的用处有千条万条理由,但是和你共同工作的一些人会坚持在给定的表格里使用连续的主关键字(PK)。然后,当发票号丢失的时候,他们就会恐慌、害怕被起诉、掩盖错误,甚至更糟。

为了解决这个问题,你可以创建一个带有Oracle标识列的表格,并用一些数据行来填充它:

  1. -- Create a test table.  
  2. CREATE TABLE TestIdentityGaps  
  3. (  
  4. ID int IDENTITY PRIMARY KEY,  
  5. Description varchar(20)  
  6. )  
  7. GO  
  8. -- Insert some values. The word INTO is optional:  
  9. INSERT [INTO] TestIdentityGaps (Description) VALUES ('One')  
  10. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Two')  
  11. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Three')  
  12. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Four')  
  13. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Five')  
  14. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Six')  
  15. GO  

现在,删除几个数据行:

  1. DELETE TestIdentityGaps  
  2. WHERE Description IN('Two', 'Five')  

在我们编写代码的时候,我们知道“二(Two)”和“五(Five)”这两个值丢了。我们想要插入两个数据行来填补这些空缺。两个简单的INSERT陈述式无法满足要求;但是,它们会在序列的结尾创建主关键字。

  1. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Two Point One')  
  2. INSERT [INTO] TestIdentityGaps (Description) VALUES ('Five Point One')  
  3. GO  
  4. SELECT * FROM TestIdentityGaps  

你也无法明确地设置标识列的值:

  1. -- Try inserting an explicit ID value of 2. Returns a warning.  
  2. INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Two Point One')  
  3. GO  

为了解决这个问题,SQL服务器2000用IDENTITY_INSERT来进行设置。为了强行插入一个带有特定值的数据行,你需要发出命令,然后在后面接上具体插入的内容:

  1. SET TestIdentityGapsON  
  2. INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Two Point One')  
  3. INSERT INTO TestIdentityGaps (id, Description) VALUES(5, 'Five Point One')  
  4. GO  
  5. SELECT * FROM TestIdentityGaps  

现在你可以看到新的数据行已经用指定的主关键字值插入了。

注意:对IDENTITY_INSERT的设置可以在任何特定的时候用在数据库里的某个表格上。如果需要在一个或者多个表格里填补空缺,你就必须用具体的命令来明确地指明每个表格。

你可以在一个带有标识列的表格里插入一个具体的值,但是要这样做的话,你必须首先把IDENTITY_INSERT的值设置为ON。如果你没有,你就会看到一条错误消息。即使你把IDENTITY_INSERT的值设置为了ON,但是如果再插入一个已有的值的话,你还是会看到错误消息。

 

 

【编辑推荐】

Oracle命令行自定义编辑器vi

oracle命令行登录的实现

Oracle创建视图的语法

Oracle创建表和索引

带您详细了解Oracle分区索引

责任编辑:段燃 来源: 互联网
相关推荐

2011-05-25 13:37:15

数据库

2010-11-16 14:15:16

oracle标识列

2011-04-15 09:26:20

Oraclemerge语句

2010-10-19 17:09:27

sql server标

2010-04-26 11:19:54

Oracle 10g

2010-11-11 11:56:39

SQL Server标

2010-04-16 14:39:45

Oracle数据库

2010-03-29 13:19:10

OracleMulti

2010-04-14 15:22:21

Oracle自动

2010-04-16 13:59:40

Oracle数据

2010-04-13 16:08:24

Oracle数据插入

2011-05-25 14:22:01

oracle伪列伪表

2010-07-16 09:17:07

SQL Server

2009-07-02 12:30:00

标识值SQL Server

2009-12-30 08:52:17

Ubuntu Tora

2010-10-27 13:16:41

oracle并行查询

2023-08-22 08:52:14

Go零值标识符

2010-11-19 10:48:44

oracle视图

2010-04-30 12:38:38

Oracle进程

2012-05-07 13:45:45

Oraclen 11g虚拟列数据库
点赞
收藏

51CTO技术栈公众号