oracle返回序列值不会增加,sql – 如何获取一个oracle序列的当前值,而不增加它?...

本文介绍了如何通过SQL查询获取和管理数据库序列,包括从user_sequences和all_sequences视图中检索序列元数据。还讨论了在序列缓存大小不为1时,如何安全地重置序列值,以避免序列值低于最小值导致的错误。同时提醒在操作期间需要注意对序列的并发使用影响。
摘要由CSDN通过智能技术生成

SELECT last_number

FROM all_sequences

WHERE sequence_owner = ''

AND sequence_name = '';

您可以从user_sequences,all_sequences和dba_sequences获取各种序列元数据。

这些视图在会话中工作。

编辑:

如果序列在您的默认模式中,则:

SELECT last_number

FROM user_sequences

WHERE sequence_name = '';

如果你想要所有的元数据,那么:

SELECT *

FROM user_sequences

WHERE sequence_name = '';

希望它帮助…

EDIT2:

如果你的缓存大小不是1,一个长时间的做法更可靠的方式是:

SELECT increment_by I

FROM user_sequences

WHERE sequence_name = 'SEQ';

I

-------

1

SELECT seq.nextval S

FROM dual;

S

-------

1234

-- Set the sequence to decrement by

-- the same as its original increment

ALTER SEQUENCE seq

INCREMENT BY -1;

Sequence altered.

SELECT seq.nextval S

FROM dual;

S

-------

1233

-- Reset the sequence to its original increment

ALTER SEQUENCE seq

INCREMENT BY 1;

Sequence altered.

只要小心,如果其他人在这段时间使用序列 – 他们(或你)可能会得到

ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated

此外,您可能希望在重置之前将缓存设置为NOCACHE,然后恢复到其原始值,以确保您没有缓存大量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值