【发布时间】:2017-10-22 02:10:39
【问题描述】:
我有一个这样声明的表列:
file_id number(10) generated always as identity primary key,
是否可以通过编程方式从其支持序列中获取currval/nextval 而无需实际查看 SYS。表来获取序列的名称,然后在该名称上使用execute immediate?
【问题讨论】:
我有一个这样声明的表列:
file_id number(10) generated always as identity primary key,
是否可以通过编程方式从其支持序列中获取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
在我的例子中,Oracle 为标识列创建的序列名称是ISEQ$$_92984。
select "ISEQ$$_92984".nextval from dual;
NEXTVAL
-------
2
insert into t1 values(default);
select * from t1;
C1
---------
1
3
【讨论】: