`

oracle实现自增长

阅读更多
利用序列产生主键值。

序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。
创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。

通过序列起始数字、最大值、最小值和增量值可以确定序列是增序还是减序,每次增或减的多少。Nocyle选项用于确定在序列达到最大值(增序列)或最小值(减序列)之后不能再产生更多的值,用以防止序列回转。

在Oracle数据库中创建序列,在使用sql语句向数据库中写入数据的时候,利用序列产生的唯一值,实现表中主键值自增。例如:
1.SQL>create table tablename   
2. 
3.    (id number notnull,…);
4. 
5.      
6.SQL >create sequence autoID increment by 1 start with 1 maxvalue 999999 cycle; 
7. 
8.    
9.SQL >insert into tablename values(autoID.nextval,...);

多个用户可以共用一个序列,但它是针对所有的表,因此产生的序号对一个表而言产生的主键值唯一但是不连续。

使用触发器产生主键值。

在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。

触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete)操作等。DML触发器是目前最广泛使用的一种触发器,即由DML语句激发的触发器,并有该语句决定DML触发器的类型。其触发事件包括insert(插入)、update(更新)和delete(删除)。无论哪种触发事件,都能为每种触发事件创建before触发器和after触发器。如可以在表上建立一个before insert 语句,表示在insert事件发生之前采取行动。

创建触发器的语法如下:
1.create[or replace]trigger 触发器名称   
2. 
3.{before|after|instead of}激发触发事件   
4. 
5.referencing_clause   
6. 
7.[WHEN trigger_condition]   
8. 
9.[FOR EACH ROW]  

referencing_clause用来引用正在处于修改状态下的行中的数据,如果在WHEN子句中指定trigger_condition的话,则首先对该条件求值。触发器主体只有在该条件为真值时才运行。利用触发器与序列相结合,可以实现在进行DML操作的时候,使表中主键值自动增加。其实现步骤可参照如下例子。


1.drop table book;  
2.--创建表     
3.create table book(      
4.   bookId varchar2(4) primary key,  
5.   name varchar2(20)        
6.);  
7.--创建序列     
8.create sequence book_seq start with 1 increment by 1;   
9. 
10.--创建触发器     
11.create or replace trigger book_trigger      
12.before insert on book      
13.for each row      
14.begin      
15.select book_seq.nextval into :new.bookId from dual;     
16.end ;  
17.--添加数据     
18.insert into book(name)  values ('cc');   
19.insert into book(name)  values ('dd');  
20. 
21.commit; 

查询数据:select * from book;

当需要对book数据库表中的主键值进行写值时,便可以使用sql语句利用序列+触发器实现主键值自动增加.
分享到:
评论

相关推荐

    oracle字段自增长

    在 Oracle 10g 的 EM 操作界面中,只需按照上图配置即可实现自增长序列,数据库端设置完成。在插入数据时,自增长字段可由空值 '' 或 null 代替,如果 insert 语句中列出了所插入的字段,如 insert into list(name) ...

    oracle主键自动增长

    在Oracle数据库中,并没有像MySQL那样的自动增长字段特性,因此在实际应用中,我们常常需要手动实现这一功能。序列(Sequence)是Oracle提供的一种用于生成一系列唯一数值的对象,非常适合用来作为表中的主键值。 #...

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    oracle中用序列实现自动增长值

    在Oracle数据库系统中,与SQL Server中的`IDENTITY`特性类似,我们可以通过使用序列(Sequences)来实现字段的自动增长值。序列是一种特殊的数据库对象,它可以生成一系列有序的数值,通常用于为表的主键字段提供...

    oracle自动增长列

    在Oracle数据库中,实现自动增长列的功能主要依赖于`SEQUENCE`对象。通过创建一个序列(SEQUENCE),可以方便地为表中的某列自动生成唯一的值,这对于主键或者需要唯一标识符的场景非常有用。 #### 1. SEQUENCE概述...

    在Hibernate中实现Oracle的自动增长

    在Hibernate中实现Oracle的自动增长,实现了oracle中的触发器功能

    如何为oracle中的表增加自动增长列.pdf

    在Oracle数据库中,表的自动增长列通常是指使用序列(SEQUENCE)或者使用Oracle提供的自动增长数据类型(例如:IDENTITY或者GENERATED AS IDENTITY),以实现表中某列值能够随着记录的增加而自动递增。本文将介绍...

    在hibernate中实现oracle的自动增长

    本文将深入探讨如何在Hibernate中实现Oracle数据库的自动增长特性,这一功能对于确保数据表中的主键唯一性至关重要。 ### Oracle数据库的自动增长机制 Oracle数据库提供了强大的序列(sequence)功能来支持自动增长...

    oracle设定自增长列

    在Oracle数据库中,实现自增长列的功能是一种常见的需求,尤其在设计主键或者唯一标识符时。这通常用于确保每条记录都有一个唯一的、连续的编号。在给定的文件中,通过创建表、序列和触发器的方式实现了这一功能。...

    oracle设置主键自动增长

    ### Oracle 设置主键自动增长详解 #### 一、概述 在数据库设计中,为了方便管理和维护数据表,经常需要为主键设置自动增长的功能。Oracle 数据库提供了强大的工具和语法支持来实现这一需求。本文主要介绍如何在 ...

    oracle设置主外键即主键序列自动增长

    下面将详细介绍如何在Oracle中创建包含主键和外键的表,并利用触发器(Trigger)和序列实现主键的自动增长。 #### 一、创建包含主键和外键的表 首先,我们来看一下创建包含主键和外键的表的基本语法和步骤。 ####...

    OracleID自增长

    ### Oracle ID自增长实现方法详解 #### 一、引言 在使用Oracle数据库进行软件开发时,经常会遇到需要为表中的记录自动生成唯一标识符(ID)的需求。而在Oracle数据库中,与MySQL不同的是,它并没有提供直接的自...

    oracle序列主键自增长

    为了实现主键自动增长,Oracle提供了序列(Sequences)这一特性,它能按照预设的规则(通常是递增)生成唯一的整数。本文将深入探讨Oracle序列主键自增长的工作原理、创建方法以及如何在表中应用。 **1. Oracle序列...

    建立oracle带自增长表

    总的来说,通过组合使用序列和触发器,可以在Oracle中实现自增长列的功能,满足在插入新记录时自动为`ID`字段生成唯一值的需求。这种方式虽然相比其他数据库系统稍显复杂,但在Oracle环境中是标准的做法。

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    为了实现主键的自动增长功能,我们需要通过创建一个序列(sequence)来实现这一目标。 1. **在表视图中设置:** - 双击表视图,打开`Table Properties`对话框。 - 转到`Columns`选项卡,选择要作为主键的列。 - ...

    Oracle数据库创建表tuser设置主键自动增长

    本文将详细介绍如何在Oracle环境中创建一个名为`tuser`的表,并实现其主键自动增长的功能。此外,还将介绍如何通过序列(sequence)来管理这个自动增长的主键值。 #### 一、创建表tuser 首先,我们需要定义`tuser`表...

    oracle实现属性的自增

    相反,Oracle 是通过序列和触发器来实现属性的自动增长的。 知识点二: 序列(Sequence) 序列是 Oracle 中的一种机制,可以生成连续的数字序列。序列可以用来生成唯一的标识符、自动增长的数字等。 知识点三: ...

    oracle自增长与临时表

    在Oracle数据库系统中,"自增长"和"临时表"是两个重要的概念,它们在数据库管理和数据处理中扮演着关键角色。自增长字段通常用于自动为新插入的记录生成唯一的标识符,而临时表则是在特定会话或事务中存储临时数据的...

Global site tag (gtag.js) - Google Analytics