从标识列的后备序列获取nextval

时间:2017-05-22 12:09:35

标签: oracle plsql oracle12c

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

IBM i

是否可以以编程方式从其后备序列中获取file_id number(10) generated always as identity primary key, / currval而无需实际查看SYS。表获取序列的名称,然后在该名称上使用nextval

1 个答案:

答案 0 :(得分:6)

  

是否可以以编程方式从中获取currval / nextval   支持序列而不实际查看SYS

是的,如果你真的需要这样做的话。您只需在USER_SEQUENCES数据字典视图或更好的USER_TAB_IDENTITY_COLS数据字典视图中查找该序列名称,并在查询中引用它。这是一个例子:

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