前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle sequence用法_oracle session

oracle sequence用法_oracle session

作者头像
全栈程序员站长
发布2022-11-02 15:59:41
8200
发布2022-11-02 15:59:41
举报

大家好,又见面了,我是你们的朋友全栈君。

1. About Sequences(关于序列)

序列是数据库对象一种。多个用户可以通过序列生成连续的数字以此来实现主键字段的自动、唯一增长,并且一个序列可为多列、多表同时使用。

序列消除了串行化并且提高了应用程序一致性。(想象一下没有序列的日子怎么办?)

2. Creating Sequences(创建序列)

前提:Prerequisites

To create a sequence inyour own schema, you must have the CREATE SEQUENCE system privilege. 在自己模式下创建序列需要create sequence权限

To create a sequence inanother user’s schema, you must have the CREATE ANY SEQUENCE system privilege. 在其他用户模式下创建序列需要create any sequence权限。

语法:Syntax

oracle sequence用法_oracle session
oracle sequence用法_oracle session

如果不加条件语句,默认创建的序列格式如下:

— Create sequence

create sequence SEQ_T

minvalue 1

maxvalue 999999999999999999999999999

start with 1

increment by 1

cache 20;

语义Semantics:

INCREMENT BY:指定序列增长步长。可以为正(升序)、负整数(降序),但不能为0。最高精度28。

START WITH: 指定序列起始数。默认为序列最小值。

MAXVALUE :指定序列最大值。最大28位。必须大于等于起始值且大于等于序列最小值。

NOMAXVALUE: 无最大值(实际为10^27或-1)。default

MINVALUE :指定序列最小值。

NOMINVALUE :无最小值(实际为1或-10^26)。Default

CYCLE :指定序列达到最大值或最小值后继续从头开始生成。

NOCYCLE :不循环生成。Default.

CACHE :指定数据库内存中预分配的序列值个数,以便快速获取。最小cache值为2。

Cache参数最大值为:

代码语言:javascript
复制
(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)

注意1:如果系统发生故障,所有缓存的没有被DML语句使用并提交的序列值将丢失。潜在丢失值数量等于cache的数量。

NOCACHE :不指定缓存数,默认缓存20

ORDER :指定order条件保证序列按请求顺序生成。此条件适用于RAC环境。

NOORDER :不保证序列按请求顺序生成。

例子:

代码语言:javascript
复制
CREATE SEQUENCE customers_seq
代码语言:javascript
复制
 START WITH     1000
代码语言:javascript
复制
 INCREMENT BY   1
代码语言:javascript
复制
 NOCACHE
代码语言:javascript
复制
 NOCYCLE;

注意2:带有cycle条件序列当达到最大值后,下一个值从最小值minvalue开始循环!

CREATE SEQUENCE seq1

START WITH 200

INCREMENT BY 10

MAXVALUE 200

CYCLE

NOCACHE;

SELECT seq1.nextval FROM dual;

结果:1

3. ALTER SEQUENCE(修改序列)

前提:

The sequence must be in your own schema, or youmust have the ALTER object privilege on

the sequence, or you must have the ALTER ANY SEQUENCE systemprivilege.

修改自己模式序列需要alter object权限,修改其他模式序列需要alter any sequence权限。

语法:

oracle sequence用法_oracle session
oracle sequence用法_oracle session

语义:

1)如果想以不同的数字重新开始序列,必须删除重建。

SQL> alter sequence seq_t start with 2;

alter sequence seq_t start with 2

*

ERROR at line 1:

ORA-02283: cannot alter starting sequencenumber

2)修改的maxvalue必须大于序列当前值。

SQL> alter sequence seq_t maxvalue 1;

alter sequence seq_t maxvalue 1

*

ERROR at line 1:

ORA-04004: MINVALUE must be less than MAXVALUE

例子:

代码语言:javascript
复制
ALTER SEQUENCE customers_seq 
代码语言:javascript
复制
   MAXVALUE 1500;
代码语言:javascript
复制
ALTER SEQUENCE customers_seq 
代码语言:javascript
复制
   CYCLE
代码语言:javascript
复制
   CACHE 5; 

4. DROP SEQUENCE(删除序列)

前提:

Thesequence must be in your own schema or you must have the DROP ANY SEQUENCE system privilege.

删除序列必须要有drop any sequence权限

语法:

oracle sequence用法_oracle session
oracle sequence用法_oracle session

例子:

代码语言:javascript
复制
DROP SEQUENCE oe.customers_seq; 

5. NEXTVAL and CURRVAL的使用限制

CURRVAL and NEXTVAL can be used in the following places:

· VALUES clause of INSERT statements

· The SELECT list of a SELECT statement

· The SET clause of an UPDATE statement

CURRVAL and NEXTVAL cannot be used in these places: 不能用于以下场景

· A subquery 子查询

· A view query or materialized view query 视图或物化视图查询

· A SELECT statement with the DISTINCT operator 含distinct关键字查询

· A SELECT statement with a GROUP BY or ORDER BY clause带order by 查询语句

· A SELECT statement that is combined with another SELECT statement with the UNION, INTERSECT, or MINUS set operator含union, interest,minus操作符

· The WHERE clause of a SELECT statement用在where条件中

· DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement 列的默认值

· The condition of a CHECK constraint check约束

————————————–

Dylan Presents.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180216.html原文链接:https://javaforall.cn

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. Creating Sequences(创建序列)
  • 3. ALTER SEQUENCE(修改序列)
  • 4. DROP SEQUENCE(删除序列)
  • 5. NEXTVAL and CURRVAL的使用限制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com