Mat*_*ský 4 oracle plsql oracle12c
我有一个像这样声明的表列:
file_id number(10) generated always as identity primary key,
Run Code Online (Sandbox Code Playgroud)
是否有可能以编程方式从其后备序列中获取currval
/ nextval
不实际查看SYS.表获取序列的名称,然后使用execute immediate
该名称?
是否有可能以编程方式从其后备序列中获取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
Run Code Online (Sandbox Code Playgroud)
在我的例子中,Oracle为标识列创建的序列名称是ISEQ$$_92984
.
select "ISEQ$$_92984".nextval from dual;
NEXTVAL
-------
2
insert into t1 values(default);
select * from t1;
C1
---------
1
3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
350 次 |
最近记录: |