当前位置: 代码迷 >> PB >> 急 PB + oracle 数据库insert有关问题
  详细解决方案

急 PB + oracle 数据库insert有关问题

热度:85   发布时间:2016-04-29 08:31:44.0
急急! PB + oracle 数据库insert问题
假设现有一表
keycode,id,name


现在需要insert数据,会存在并发操作的问题,id需要流水号生成(每次加1),在多台电脑同时插入,保证id流水号顺利的功能
之前用oracle的序列功能测试过,但是insert失败也会导致id增加,所以这种方法不可行
请各位大虾给个可行,简便的方法


在线等


------解决方案--------------------
如果你不想用序列的话,还可以有三种方法:
1.可以建一个表专存流水号,在insert前取号,insert成功后更新表流水号;
2.如果id是number型,直接slect max(nvl(id,0))+1 from 表;
3.建触发器,
CREATE OR REPLACE TRIGGER tr_name
 BEFORE INSERT ON tablename FOR EACH ROW
BEGIN
...
 :New.id := :Old.id+1;(感觉可以,没测^_^)
 
END;

------解决方案--------------------
触发器取ID加1
SQL code
CREATE OR REPLACE TRIGGER tr_name  BEFORE INSERT ON table_name  FOR EACH ROWDECLARE  v_ID       number;BEGIN  v_ID := 0;   SELECT MAX(ID)    INTO v_ID    FROM table_name;  IF v_ID IS NULL THEN      v_ID := 0;  END IF;   :NEW.ID := v_ID + 1 ;END tr_name;
  相关解决方案