自己实现类似Sequence的东西。
各位大师,我想用procedure+表实现一个类似Oracle Sequence的东西。
具体做法如下:CREATE TABLE KEY_TABLE(KEY_NAME VARCHAR2(30), CURRENT_SEQ NUMBER(12), CONSTRAINT KEY_TABLE_PK
PRIMARY KEY(KEY_NAME))
INSERT INTO KEY_TABLE VALUES('THE_KEY1',1);
INSERT INTO KEY_TABLE VALUES('TABLE2_KEY',1);然后通过一个一个存储过程根据提供的key name取表中的current sequence,同时把current sequence+1。
关键我不知道这样做,如何能够避免并发问题,同时有两个访问同一个key name得到的key诗一样的,这样就不行了。
请问如何解决这个问题?

解决方案 »

  1.   

    你可以不这样做的.可以根据你的KEY_NAME创建SEQUENCE 然后在过程中,直接访问你的相应的SEQUENCE的NEXTVAL就可以了,如果这样的话,并发的问题就不用你控制了.
      

  2.   

    你写个函数获得key后马上更新,这样就不回出现并发的问题了
      

  3.   

    没错我用sequence是不用考虑并发问题。
    现在我就想用这个方法,有什么解决方案马。
      

  4.   

    如果并发的话,你的肯定不行。你可以在查询时 Select * From KEY_TABLE Where ... for update
    这样就锁住你的行了,再更改,完事儿Commit就没事儿了。