Oracle 标识列循环

Oracle Identity Column cycling

我可以将此 IDENT_COL 定义为根据其他列的值从最小值重新开始吗?

即如果tx_ref相同,则IDENT_COL.currentval加1,否则从1开始。

CREATE TABLE ogun_test(
    col_a       VARCHAR2(10),
    col_b       VARCHAR2(10),
    tx_ref      VARCHAR2(20),
    ident_col   NUMBER(*,0)
                            GENERATED BY DEFAULT AS IDENTITY
)

您可以定义循环的标识:

create table t (
  c1 int
    generated as identity
    start with 1 cycle maxvalue 2
    nocache,
  c2 int
);

insert into t values ( default, 0 );
insert into t values ( default, 0 );
insert into t values ( default, 0 );

select * from t;

C1     C2   
    1     0 
    2     0 
    1     0 

但对其他栏目而言则不然。所以你必须使用其他解决方案。