`

Oracle的id自增长的两种方式

 
阅读更多

方式一:

利用序列产生主键值。 

序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。

 

--创建sequence 
create sequence seq_on_test 
increment by 1 
start with 1 
nomaxvalue 
nocycle 
nocache; 

--建表 
drop table test; 
create table test( 
ID integer 
,stu_name nvarchar2(4) 
,stu_age number 
); 

--插入数据 
insert into test values(seq_on_test.nextval,'Mary',15); 
insert into test values(seq_on_test.nextval,'Tom',16); 

select * from test; 

--结果 
/* 
1 Mary 15 
2 Tom 16 
*/ 

--seq的两个方法 
select seq_on_test.currval from dual; 
select seq_on_test.nextval from dual; 

--结果 
/* 
2 
3 
*/ 

 

方式二: 

自定义一个序列(sequence),然后创建触发器;

例:

首先,创建一张表:

CREATE TABLE example(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25));

 

然后,自定义一个序列(sequence):

CREATE SEQUENCE example_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区

 

再创建一个触发器:

CREATE TRIGGER example_triger BEFORE
INSERT ON example FOR EACH ROW WHEN (new.id is null)--只有在id为空时,启动该触发器生成id号
begin
select example_sequence.nextval into: new.id from dual;
end;

 

 测试插入数据:

insert into example(name) values('张三');
insert into example(id, name) values(111,'李四');

 

查询表的结果是:

id name
1 张三
111 李四

 

 

http://www.jb51.net/article/50415.htm

http://www.cnblogs.com/dlts26/archive/2012/05/22/2513563.html

 

分享到:
评论

相关推荐

    OracleID自增长

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

    oracle自动增长列

    使用`SEQUENCE`生成值的方式有两种:`NEXTVAL`和`CURRVAL`。 - `NEXTVAL`:获取序列的下一个值。 - `CURRVAL`:获取序列当前的值。 当首次调用`CURRVAL`之前必须先调用一次`NEXTVAL`,否则会引发错误。 例如,...

    实现oracle数据库字段自增长(两种方式)

    程序猿都知道mysql等其他的数据库都有随着记录的插入而表ID会自动增长的功能,反而oracle却没有这一功能,下面通过两种方式来解决字段增长的功能,具体内容情况下文。 因为两种方式都需要通过创建序列来实现,这里先...

    oracle自增长与临时表

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

    Oracle插入数据时获取自增ID

    创建了序列后,可以通过两种方式使用它来插入数据: 1. **直接在INSERT语句中指定序列值**: ```sql INSERT INTO atable (id, a) VALUES (seq_atable.NEXTVAL, 'test'); ``` 这种方式可以直接在插入语句中调用`...

    oracle 创建字段自增长实现方式

    mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。  因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 ...

    oracle自增长与sqlserver一样好用

    在Oracle数据库中,自增长序列是一种用于生成连续整数序列的对象。它可以被设计为递增或递减,且可以设置起始值、增量、最大值和最小值等属性。创建序列的基本语法如下: ```sql CREATE SEQUENCE sequence_name ...

    Oracle与Mysql自动增长列(id)的区别

    Oracle和MySQL是两种广泛应用的关系型数据库管理系统,它们在处理自动增长列(通常为表的主键ID)的方式上有显著的差异。自动增长列是一种特殊的数据类型,它在每次插入新记录时自动递增,通常用于生成唯一的标识符...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    本文将深入探讨MySQL、SQL Server和Oracle这三种主流数据库系统中主键自动增长的设置方法。 在MySQL中,主键自动增长是通过`auto_increment`关键字实现的。当你创建一个表并定义某个字段为`auto_increment`类型的...

    两种oracle创建字段自增长的实现方式

    以下是两种常见的在Oracle中创建字段自增长的方法: **解决方式一:序列+触发器** 1. **创建序列**: ```sql CREATE SEQUENCE SEQ_T_RECV MINVALUE 1 MAXVALUE 9999999 START WITH 1 INCREMENT BY 1 ...

    ORACLE分区

    此操作可以防止该文件因自动增长而无限增大,有助于控制磁盘空间的使用。 #### 2. 创建新的较小的undo tablespace 接着,创建一个新的较小的undo表空间以分担原有undo表空间的压力: ``` CREATE UNDO TABLESPACE ...

    oracle与mysql的区别

    Oracle 和 MySQL 是两种最流行的关系型数据库管理系统,它们之间有许多相同点和不同点。了解它们的优缺点和使用特点对于选择合适的数据库管理系统非常重要。 相同点 1. 都是关系型数据库管理系统 2. 目前最流行的...

    Oracle里抽取随机数的多种方法

    首先,我们创建一个唯一增长的序列号 tmp_id: create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache; 然后,我们创建一个临时表 tmp_1,把符合本次活动条件的记录全部取出来: ...

    oracle 不用新建序列 重置序列(从1开始增长)

    在Oracle数据库管理中,序列是一种常用的对象,用于自动产生唯一的数值。序列通常被用来作为主键或唯一标识符,特别是在自动生成记录ID时。然而,有时候我们可能需要重置序列,使其从特定值开始,例如从1开始增长,...

    oracle实现属性的自增

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

    对有自增长字段的表导入数据注意事项

    您可能感兴趣的文章:SQL Server设置主键自增长列(使用sql语句实现)oracle中的ID号实现自增长的方法mysql修改自增长主键int类型为char类型示例自增长键列统计信息的处理方法实现oracle数据库字段自增长(两种方式)

    Oracle与MYSQL的几点区别

    - Oracle不直接支持表级别的自增长字段,而是提供了`SEQUENCE`对象来实现类似功能。 - 示例:创建一个序列并将其用于插入操作。 ```sql CREATE SEQUENCE seq_id INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...

    MyBatis Oracle 自增序列的实现方法

    在Oracle中,有两种方式使用序列插入数据: 1. 先查询序列的下一个值,然后在`INSERT`语句中使用这个值。如上面的`<selectKey>`所示,先获取`SEQ_TABLE.NEXTVAL`,然后插入。 2. 直接在`INSERT`语句中使用`sequence....

Global site tag (gtag.js) - Google Analytics