我在oracle 12中创建了一个以列为标识的表。问题是我想找到标识列的当前值。我怎么能找到这个,请有人帮我解决这个问题...
答案 0 :(得分:1)
你为什么想知道?如果要插入子行,您可以使用 ShapeUtil.drawCircle( width, height)
.then(function (resultSVG) {
sharp(croppedImage)
.overlayWith(new Buffer(resultSVG), {cutout: true})
.png().toBuffer();
}
语句的returning
子句,如下所示:
insert
答案 1 :(得分:1)
您可以使用数据字典视图*_TAB_IDENTITY_COLS
这是一个有效的例子。
create TABLE t ( ID INTEGER GENERATED BY DEFAULT AS IDENTITY, NAME VARCHAR2(10));
Table created.
INSERT INTO t(NAME) VALUES ( 'TESTER' );
1 row(s) inserted.
select SEQUENCE_NAME FROM user_tab_identity_cols WHERE TABLE_NAME ='T' ;
SEQUENCE_NAME
-----------
ISEQ$$_1727054
现在你可以从这个序列中获得currval
。
select ISEQ$$_1727054.CURRVAL FROM DUAL;
CURRVAL
-------
1
LIVESQL DEMO - 需要免费的OTN帐户。
答案 2 :(得分:0)
正如我在this blog post中所写的那样,此查询会生成模式的所有标识的后备序列的currval
值:
with
function current_value(p_table_name varchar2) return number is
v_current number;
begin
for rec in (
select data_default
from user_tab_cols
where table_name = p_table_name
and data_default is not null
and identity_column = 'YES'
)
loop
execute immediate replace(
'select ' || rec.data_default || ' from dual',
'.nextval',
'.currval'
) into v_current;
return v_current;
end loop;
return null;
end;
select *
from (
select table_name, current_value(table_name) current_value
from user_tables
)
where current_value is not null
order by table_name;
/
输出可能是这样的:
TABLE_NAME CURRENT_VALUE
--------------------------
T1 3
T2 1