情况是这样的,目前正是环境已经有一个处在使用中的表TRANS,主键ID是数字;
现在我想修改程序让ID从序列中取值,比如就叫做SEQ_TRANS,它的起始值就不应该是1了;
我知道可以先查到最大值比如12345,然后用这种方法创建
create sequence SEQ_TRANS minvalue 1 maxvalue 9999999 start with 12345 increment by 1;现在的问题是有没有创建序列的时候办法自动获取这个最大值,就是感觉像这样的
create sequence SEQ_TRANS minvalue 1 maxvalue 999999 start with (select max(id)+1 from TRANS) increment by 1;

解决方案 »

  1.   

    只能这样子吧:
    declare
      n number;
    begin
      begin
        execute immediate 'drop sequence SEQ_TRANS';
      exception
        when others then
          null;
      end;
      select max(id) + 1 into n from TRANS;
      execute immediate '  
      create sequence SEQ_TRANS minvalue 1 maxvalue 999999 start with ' || n ||
                        ' increment by 1';
    end;