oracle - 从标识列的支持序列中获取 nextval

标签 oracle plsql oracle12c

我有一个这样声明的表列:

file_id number(10) generated always as identity primary key,

是否有可能以编程方式获得 currval/nextval从它的支持序列而不实际查看 SYS。表来获取序列的名称,然后使用 execute immediate那个名字?

最佳答案

Is it possible to programatically get a currval/nextval from its backing sequence without actually looking into the SYS



是的,如果你真的需要这样做。您可以简单地在 USER_SEQUENCES 中查找该序列名称。数据字典 View ,或者更好 USER_TAB_IDENTITY_COLS数据字典 View ,并在您的查询中引用它。下面是一个例子:
create table t1(
  c1 number  generated always as identity primary key
);

insert into t1 values(default);

select *  from t1;

C1
-----
    1

就我而言,Oracle 为标识列创建的序列名称是 ISEQ$$_92984 .
select "ISEQ$$_92984".nextval from dual;

NEXTVAL
-------
     2

insert into t1 values(default);

select * from t1;

 C1
 ---------
         1
         3

关于oracle - 从标识列的支持序列中获取 nextval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44112516/

相关文章:

java - 使用hikari连接池时如何解决 "Socket read timed out"

oracle - oracle 12c获取行锁时是否自动获取表锁?

oracle - ORA-04036 : PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

oracle - 将驼峰式句子拆分为单词

oracle - Entity Framework 6 免费 Oracle 数据提供程序

database - Oracle 12c - 未插入记录的列默认字符串值 - 改为空

sql - 获取列中允许的最大长度 |甲骨文

database - PL/SQL 使用存储过程错误 - 必须声明标识符

bash - 如何在 bash 中仅替换单个换行符?

sql - SQL (Oracle) 中的递归计算