You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle中获取序列的最后使用最大值?

如何直接查看共用序列的最后使用值

针对你两张表共用序列seq1的场景,直接查询数据库的序列元数据视图是最可靠的方案——不要依赖表主键的最大值,因为序列是独立于表存在的:比如插入数据后回滚,表的最大值不会更新,但序列的nextval已经消耗了,这时候表的最大值会和序列实际值不一致。

以下是主流数据库的具体查询方法:

Oracle数据库

  • 如果要查看序列的最后分配值,优先查询数据字典视图:
    SELECT last_number FROM user_sequences WHERE sequence_name = 'SEQ1';
    
    注意:如果序列设置了CACHE(缓存),last_number会显示下一批缓存的起始值,而非实际最后使用的值。这种情况下,若当前会话已经调用过seq1.nextval,可以直接查当前会话的序列当前值:
    SELECT seq1.currval FROM dual;
    
    如果当前会话没调用过nextval,又不想消耗序列值,可以用管理员权限查询v$sequence视图:
    SELECT current_value FROM v$sequence WHERE sequence_name = 'SEQ1';
    

PostgreSQL数据库

  • 直接查询序列的最后生成值,无需提前调用nextval:
    SELECT last_value FROM seq1;
    
    若要查看当前会话的序列当前值,用:
    SELECT currval('seq1');
    

SQL Server(2012及以上版本)

  • 查询序列的当前值:
    SELECT current_value FROM sys.sequences WHERE name = 'seq1';
    

内容的提问来源于stack exchange,提问作者Pooja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:14:53