oracle里nextval,oracle中的CURRVAL和NEXTVAL用法

本文详细介绍了Oracle数据库中的sequence,包括序列的概念、作用,创建sequence的步骤,如何获取并使用序列值,以及sequence在INSERT、UPDATE等操作中的应用。重点讲解了如何定义sequence、获取序列值的方法和sequence在实际开发中的应用场景,最后提到删除sequence的注意事项。
摘要由CSDN通过智能技术生成

1.什么是sequence?其作用是什么?

在Oracle數據庫中,什么是序列呢?其中的作用是什么呢?其實sequence是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(類型為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,在插入之前,獲取序列號nextval值,然后進行插入。也可以通過查詢檢查當前值,或使序列增至下一個值。

2.如何定義一個sequence?

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方或者在實際開發中,比如一個需求表格中的需求ID是唯一主鍵,都可以用sequence來獲取。

首先在用Oracle序列號之前,我們首先得創建一個序列然后就可以通過CURRY、NEXTVAL,獲取當前表中的返回sequence的當前值、下一個squence的值。可以通過下面的語句來創建Squence:create sequence INR_REQUIRMENT_SQUENCE

INCREMENT BY 1 -- 每次加幾個

START WITH 1 -- 從1開始計數

NOMAXVALUE -- 不設置最大值

NOCYCLE -- 一直累加,不循環

CACHE 10;

上面的語句則創建了一個INR_REQUIRMENT_SQUENCE序列

3.如何獲取一個sequence的值?

SELECT INR_REQUIRMENT_SQUENCE.CURRVAL FROM dual –獲取當前的sequence的值,

第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會自動增加你定義的INCREMENT BY值, 然后返回增加后的值。CURRVAL 總是返回當前sequence的值,但是在第一次NEXTVAL 初始化之后才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次sequence的值, 所以如果你在同一個語句里面使用多個NEXTVAL。

4.可以在哪些地方使用Sequence?

不包含子查詢、snapshot、VIEW的 SELECT 語句

INSERT語句的子查詢中

NSERT語句的VALUES中

UPDATE 的 SET中

在實際開發中,比如一個表中的主鍵需要先得到主鍵ID,可以用NEXTVAL來獲下一個取序列值,然后再進行其他操作。

5.如何刪除Sequence?

DROP sequence policy_id_seq; –policy_id_seq為sequence的名字,如果要改變sequence中的初始值,必須先刪除序列號然后再進行創建。你或者是該sequence的owner,或者有ALTER ANY sequence權限才能改動sequence,直接用Alter語句進行sequence的更新。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值