1。创建序列
  create sequence SEQNAME
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
2。使用序列
20040909+0001------〉'20040909'||SEQNAME.NEXTVAL

解决方案 »

  1.   

    我看不懂你的代码。
    我一般这样处理  select * from tb_tradenum for update nowait
    将纪录锁上。
      

  2.   

    我的过程是
    查询表获取数据,然后对数据分析;从而进行update表,或删除旧的,添加新的如果将纪录锁上了,那怎么样把他解开呢,在没解锁前其他用户一直等待吗?
    commit?在代码里怎样写啊
      

  3.   

    如果你的序列 不是要求必须连续那可以这样。select max_seq into x_maxseq from tb_tradenum for update nowait
    update tb_tradenum set max_seq = max_seq + 1;
    commit;
      

  4.   

    LOCK TABLES tbl_name [AS alias] {READ | [LOW_PRIORITY] WRITE}
                [, tbl_name {READ | [LOW_PRIORITY] WRITE} ...]
    ...
    UNLOCK TABLESLOCK TABLES为当前线程锁定表。UNLOCK TABLES释放被当前线程持有的任何锁。当线程发出另外一个LOCK TABLES时,或当服务器的连接被关闭时,当前线程锁定的所有表自动被解锁。 如果一个线程获得在一个表上的一个READ锁,该线程(和所有其他线程)只能从表中读。如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程READ或WRITE表,其他线程被阻止。 每个线程等待(没有超时)直到它获得它请求的所有锁。