Oracle中的序列Sequences

本文介绍了Oracle数据库中的序列(Sequences),包括其作为自动唯一数字生成器的作用,创建序列的语法,以及序列的使用示例。文章详细阐述了如何创建、验证、修改和删除序列,并探讨了NEXTVAL和CURRVAL伪列在插入记录和获取当前值时的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. What Is a Sequence?

自动生成的唯一数字

 是一个可分享的对象

通常用于创建一个主键值

替代应用程序代码

缓冲到内存时,加快序列的访问速度

2.Creating a Sequence: Syntax语法

Ø 定义一个序列自动生成连续的数字

create sequence name

[increment by n]

[start with n]

[{maxvalue nomaxvalue}]

[{minvalue nominvalue}]

[{cyclenocycle}]

[{cachenocache}]

3.Creating a Sequence: Example

Ø 创建一个名为S_DEPT_ID的序列用作S_DEPT表的主键

Ø 不使用CYCLE

SQL> CREATE SEQUENCE s_dept_id

INCREMENT BY 1

START WITH 51

MAXVALUE 9999999

NOCACHE

NOCYCLE;

Sequence created.

4.Confirming Sequences确认序列

Ø 验证您的序列值是否创建成功(是否加入了USER_SEQUENCES数据字典表中)

Ø SQL> SELECT sequence_name, min_value,

max_value, increment_by,

last_number

FROM user_sequences;

Ø LAST_NUMBER列显示下一个可用的序列号

5.NEXTVAL and CURRVAL Pseudocolumns伪列

NEXTVAL 返回下一个可用的序列值

它每次引用时都返回一个唯一值,即使对于不同用 户.

CURRVAL 获取当前序列值

6.Using the Sequence: Examples

在区域2插入一个名为Finance的新部门

SQL> INSERT INTO s_dept(id, name, region_id)

2 VALUES (s_dept_id.NEXTVAL,

3 'Finance', 2);

1 row created.

查看序列S_DEPT_ID的当前值

SELECT s_dept_id.NEXTVAL

2 FROM SYS.dual;

再运行

SQL> SELECT s_dept_id.CURRVAL

2 FROM SYS.dual;

7.Using a Sequence

缓冲到内存中的序列值可以被更快的访问到

空白序列值出现在以下情况:

当rollback发生时

当系统崩溃时

当一个序列在另外一个表中使用时

如果一个序列创建时使用了NOCACHE,您就可以通过查询USER_SEQUENCES表来查看下一个可用的序列

8.Modifying a Sequence: Syntax

改变增量,最大值,最小值,循环类型,缓冲类型

ALTER SEQUENCE sequence

[INCREMENT BY n]

[{MAXVALUE | NOMAXVALUE}]

[{MINVALUE | NOMINVALUE}]

[{CYCLE | NOCYCLE}]

[{CACHE | NOCACHE}]

9.Modifying a Sequence: Guidelines

你必需是序列的拥有者,或者有这个序列的ALTER权限.

只有之后的序列会受到影响.

验证被执行.

这个序列需要被删除或者重建,从一个不同的数字开始增加.

10.Removing a Sequence

用DROP SEQUENCE 命令从数据字典中删除一个序列.

被删除后,该序列无法被再次引用.

SQL > DROP SEQUENCE s_dept_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值