半城风月半城雪 2018-04-04 06:31 采纳率: 50%
浏览 666
已采纳

oracle 触发器,拆单,求问

 CREATE OR REPLACE TRIGGER SPLITSINGLETRIGGER
  BEFORE INSERT ON CT_CUS_GDSHOPGUIDBILLENTRY
  FOR EACH ROW
DECLARE
  V_NEWID VARCHAR2(50);
  V_NUMBER VARCHAR2(50);
BEGIN
  SELECT FID
    INTO V_NEWID
    FROM CREFID
   WHERE FSTATE = 1
     AND ROWNUM = 1;
      SELECT ABS(MOD(DBMS_RANDOM.RANDOM,50)) INTO V_NUMBER FROM DUAL;
  IF :NEW.FSEQ >= 2 THEN
    --当选择的商品数大于等于2 ,给表头插入新的一条数据
    INSERT INTO CT_CUS_GDSHOPGUIDBILL
      SELECT FCREATORID,
             FCREATETIME,
             FLASTUPDATEUSERID,
             FLASTUPDATETIME,
             FCONTROLUNITID,
             FNUMBER || TO_CHAR(V_NUMBER), --修改FNUMBER
             FBIZDATE,
             FHANDLERID,
             FDESCRIPTION,
             FHASEFFECTED,
             FAUDITORID,
             FSOURCEBILLID,
             FSOURCEFUNCTION,
             V_NEWID, --修改FID
             FFIVOUCHERED,
             CFFICOMPANYID,
             CFGUIDERNAMEID,
             CFGUIDERNAMESHOW,
             CFGUIDERID,
             CFBILLTYPE,
             CFBILLSTATE,
             CFSGBILLSTATES,
             CFGDSHOPGUIDERNUM,
             CFORGANIZATIONUNIT,
             CFAUDITDATE,
             CFDELIVERYORDER,
             CFCONFIRM,
             CFTOREVIEWDATE,
             CFCONFIRMDATE,
             CFTOREVIEW,
             FENTITYCUSTOMER,
             FENTITYCUSTOMERADDRESS,
             FENTITYCUSTOMERTEL,
             CFBUSFEEDBACK,
             CFFINFEEDBACK,
             CFYANZHENGMA,
             CFOSMDANHAO
        FROM CT_CUS_GDSHOPGUIDBILL
       WHERE FID = :NEW.FPARENTID;
    :NEW.FPARENTID := V_NEWID;
    :NEW.FSEQ      := 1;
    UPDATE CREFID SET FSTATE = 2 WHERE FID = V_NEWID;--修改state
  END IF;
END;

触发器现在是生成随机数,不过还是FNUMBER有可能会重复
提交商品不止一个的话本来是想给fnumber加上一个有顺序的数字
比如拆两条,有一条fnumber+2
拆三条,一条+2,一条+3
但是传过来的fseq(本来是序号)可能由于先拆两单,再拆导致序号不固定,
出现重复的fnumber,有什么办法,让fnumber可以按顺序来,

  • 写回答

3条回答 默认 最新

  • DukeYong 2018-04-05 02:05
    关注

    如果不想他重复且自动累加,可以借助oracle 的序列sequence,定义个序列,每次获取nextval

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测