首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

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

2012-03-08 
急急!PB + oracle 数据库insert问题假设现有一表keycode,id,name现在需要insert数据,会存在并发操作的问题

急急! 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; 

热点排行