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