数据表名为 t_lyj
有个字段是 bh --编号 varchar2
它的规则是 年份-001 即2011-001 , 2011-002。。2011-9999
如果要插入今年的的数据,bh取当前最大的编号 加1
如果是2012年的时候,则第一条的bh是2012-001 现在想写个触发器,当insert的时候执行。
帮帮我这个新手吧。
有个字段是 bh --编号 varchar2
它的规则是 年份-001 即2011-001 , 2011-002。。2011-9999
如果要插入今年的的数据,bh取当前最大的编号 加1
如果是2012年的时候,则第一条的bh是2012-001 现在想写个触发器,当insert的时候执行。
帮帮我这个新手吧。
AFTER INSERT ON CALLFUN
referencing NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
CURSOR cur_autoinsert_levelpermission IS select LEVELID from OPERLEVEL;
BEGIN
FOR EACH_LEVELROW IN cur_autoinsert_levelpermission LOOP
INSERT INTO levelpermission VALUES(:NEW.CALLFUNID,EACH_LEVELROW.LEVELID,'1');
END LOOP;
END CALLFUNINSERT;上面给了你一个例子,你自己去改吧
如果自己生成编号,则要解决并发问题,
否则两并发的会话可能取到同一个编号。所以最好使用一种串行的机制来生成编号。
可以建一张表来存储编号,然后采用串
主动锁定select ...for update;方式生成编号。
但这有一个缺点,大规模并发下效率低。