一个表,2个字段字段一 : HVTRNO 报文编号
字段二 : CATISEQNO 报文中的主体编号想实现这样一个功能:一个报文编号下有多个主体,而且主体的编号是自动增加的 从1开始增加到99999999,报文编号是可以重复的.HVTRNO + CATISEQNO 构成一个主键,不能重复!!!拜谢了~~~~~
字段二 : CATISEQNO 报文中的主体编号想实现这样一个功能:一个报文编号下有多个主体,而且主体的编号是自动增加的 从1开始增加到99999999,报文编号是可以重复的.HVTRNO + CATISEQNO 构成一个主键,不能重复!!!拜谢了~~~~~
(
ID varchar2(50) primary key,
HVTRNO varchar2(20),
CATISEQNO int
)Create Sequence seq_temp
start with 1
increment by 1
maxvalue 99999999
Declare
h varchar2(20);
Begin
h:='h1';Insert into temp
select h||to_char(seq_temp.nextVal,'00000000'),h,seq_temp.nextVal
from dual;End;select * from temp
如果要SQL语句可以使用分析函数,参考下面的例子:ROW_NUMBER
功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。
SAMPLE:下例返回每个员工再在每个部门中按员工号排序后的顺序号SELECT department_id, last_name, employee_id, ROW_NUMBER()
OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
FROM employees
WHERE department_id < 50;DEPARTMENT_ID LAST_NAME EMPLOYEE_ID EMP_ID
------------- ------------------------- ----------- ----------
10 Whalen 200 1
20 Hartstein 201 1
20 Fay 202 2
30 Raphaely 114 1
30 Khoo 115 2
30 Baida 116 3
30 Tobias 117 4
30 Himuro 118 5
30 Colmenares 119 6
40 Mavris 203 1DEPARTMENT_ID是分组列,EMP_ID的序号是通过分析函数自动生成的.
CREATE TABLE TBL(HVTRNO NUMBER,CATISEQNO NUMBER,PRIMARY KEY(HVTRNO, CATISEQNO));不过要是不同的HVTRNO 下边的CATISEQNO 都是从1开始的话,不好弄.
可以select max(CATISEQNO+1) from tbl where HVTRNO=:HVTRNO