一个表,2个字段字段一 : HVTRNO       报文编号
字段二 : CATISEQNO    报文中的主体编号想实现这样一个功能:一个报文编号下有多个主体,而且主体的编号是自动增加的 从1开始增加到99999999,报文编号是可以重复的.HVTRNO + CATISEQNO 构成一个主键,不能重复!!!拜谢了~~~~~

解决方案 »

  1.   

    是要创建表的 SQL 语句吗?CATISEQNO 自动增加,可在 insert 语句中用 SEQUENCE 实现。 用 CATISEQNO 作主键不行吗?下面是HVTRNO + CATISEQNO 构成一个主键的写法:CREATE SEQUENCE seq_CATISEQNO;CREATE TABLE aaa(HVTRNO NUMBER,CATISEQNO NUMBER,CONSTRAINT aaa_pk PRIMARY KEY(HVTRNO, CATISEQNO));
      

  2.   

    Create global temporary table temp
    (
    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
      

  3.   

    是要一条sql语句还是创建表的思路与语法:
    如果要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的序号是通过分析函数自动生成的.
      

  4.   

    CREATE SEQUENCE SEQ_CATISEQNO INCREMENT BY 1  START  WITH  1 MAXVALUE  99999  CYCLE  NOCACHE;
    CREATE TABLE TBL(HVTRNO NUMBER,CATISEQNO NUMBER,PRIMARY KEY(HVTRNO, CATISEQNO));不过要是不同的HVTRNO 下边的CATISEQNO 都是从1开始的话,不好弄.
    可以select max(CATISEQNO+1) from tbl where HVTRNO=:HVTRNO
      

  5.   

    还有就是这个字段HVTRNO用sequence生成
      

  6.   

    3.4 测试 中可用LZ的"报文编号"代替"日期":http://topic.csdn.net/u/20081115/10/491a0efc-90cf-45b8-968e-29f3521f9279.html?seed=1462776239