tab1中有两个主键
seqc,id
seqc和id可以唯一确定一条记录
其中id在插入记录的时候要指定
有没有办法让seqc能根据不同的id设置不同的自增序列。

解决方案 »

  1.   

    定义两个不同的seqc啊
    然后用取啊
    试试
      

  2.   

    没有完全理解楼主的意思。楼主是要实现这样的功能吗?id  seqc
    1   1
    1   2
    1   32   1
    2   2
    ...
      
      

  3.   


    这位大哥貌似没有明白我的意思,id是指定的撒,seqc要求根据不同的id拥有不同的序列,
    假如说id为1的记录有10条,那么在插入操作时,我只需要确定id就好了,然后seqc肯定是selece seqc.nextval from dual这样类似的语句取出来的。
    如果我还有id为2的记录5条,那么seqc要求又从1开始一直到5
    如此如果有id为n的记录x条,那么seqc还要从1开始到x。
    这样是不是用sequence不好.
      

  4.   


    seqc肯定会有断号的问题,而且一个seqc就可以确定唯一性,为什么还要用seqc+id作为主键呢?
      

  5.   

    楼主一定要用seqc+id作为主键,想简单用seqc实现肯定不可能实现。还是写程序吧或其它实现方法
      

  6.   

    不用SEQUENCE,用个触发器就好CREATE OR REPLACE TRIGGER TRI_TEST BEFORE INSERT ON TAB1 FOR EACH ROW
    BEGIN
       SELECT MAX(SQEC)+1 INTO :NEW.SQEC FROM TAB1 WHERE ID=:NEWID; 
    END;
      

  7.   

    这种情况倒是经常见到,比如id表示某一个用户,这个用户的属性每次发生变更,都新生成一条记录,id保持不变,而seqc就往上加。
    我们都是在程序里面处理,就像上面触发器里面的语句,取一下该id对应的seqc的最大值。