为什么不将单列 pk00 创建为 pk 并将其设置为自动增量以进行存储?即像往常一样插入 pk01 密钥(您需要拥有它)。表中没有 pk02,但在使用窗口函数表达式查询时创建它:rank() over (partition by pk01 order by pk00) as pk02.
Table00
pk00数pk
pk01号
列 1 varchar2(100)
...
...
应用程序的其余部分使用 Table 查询,如下所示。
########################
drop table table00;
create table table00 (
pk00 NUMBER GENERATED BY DEFAULT AS IDENTITY(START with 1 INCREMENT by 1),
pk01 number,
column1 varchar2(5),
column2 varchar2(5)
);
truncate table table00;
begin
insert into table00(pk01, column1, column2) values(1, 'abc', 'yest');
insert into table00(pk01, column1, column2) values(1, 'def', 'yest');
insert into table00(pk01, column1, column2) values(1, 'ghi', 'yest');
insert into table00(pk01, column1, column2) values(2, 'jkl', 'today');
insert into table00(pk01, column1, column2) values(2, 'mno', 'today');
insert into table00(pk01, column1, column2) values(2, 'pqr', 'today');
insert into table00(pk01, column1, column2) values(1, 'stu', 'yest');
commit;
end;
/
--select * from table00;
select
--pk00,
pk01,
rank() over (partition by pk01 order by pk00) as pk02,
column1,
column2
from table00
order by 1,2
;
PK01 PK02 COLUM COLUM
---------- ---------- ----- -----
1 1 abc yest
1 2 def yest
1 3 ghi yest
1 4 stu yest
2 1 jkl today
2 2 mno today
2 3 pqr today
7 rows selected.
#########################