Trigger

            
           Trigger 中的OLD,和NEW, 參數(shù)。
           
          在  INSERT 時(shí),只有NEW,OLD為空,DELETE時(shí),只有OLD,NEW為空。update時(shí)都有啦
          --這是寫的第一個(gè)觸發(fā)器,紀(jì)念下。
          CREATE OR REPLACE TRIGGER TRG_SXYK_ST_SNAPSHOOT
            BEFORE INSERT OR UPDATE OR DELETE ON BMS_ST_QTY_LST
            REFERENCING OLD AS OLD NEW AS NEW
            FOR EACH ROW
                 
          DECLARE
            erpcompanyid varchar2(50);
            zxgoodsid varchar2(50);
            var_goodsname varchar2(50);
            issaved number(1);
            oldstqty number(10);
            pragma autonomous_transaction;
            var_goodsid NUMBER(10);
            var_storageid NUMBER(10);
           
          BEGIN
           
            BEGIN
            --不管增刪改 ,找到 stid
            SELECT nvl(:NEW.Storageid,:old.Storageid) INTO var_storageid FROM dual;
           
            IF  var_Storageid IN(5,2922) THEN
             
                --不管增刪改 ,找到 goodsid
                SELECT nvl(:new.Goodsid,:old.Goodsid) INTO var_goodsid FROM dual;
               
                select goodsname,zx_goodsid INTO var_goodsname,zxgoodsid from pub_goods WHERE goodsid = var_goodsid;
                select max(value) into erpcompanyid from Sys_npbusi_config where keyword = 'ERPCOMPANYID';
               
                     -- 驗(yàn)證 省貨品編碼,配送企業(yè)是否為空,為空則不插入
                IF zxgoodsid is not null and erpcompanyid is not null THEN
                 
                   select COUNT(1) into issaved FROM TB_KCB WHERE ERPDRUGID= var_goodsid ;
                   select nvl(sum(goodsqty),0) into oldstqty from bms_st_qty_lst where  goodsid=var_goodsid and storageid IN (5,2922);
                  
                   --不管增刪改 ,如果存在則更新
                   IF ISSAVED = 1 THEN
                   UPDATE TB_KCB SET KCSL=(oldstqty - nvl(:OLD.GOODSQTY,0) + nvl(:NEW.GOODSQTY,0)),
                   TB_KCB.UPDATETIME=SYSDATE WHERE TB_KCB.ERPDRUGID=var_GOODSID;
                   COMMIT;
                        
                   ELSE
                    
                   --不管增刪改 ,如果不存在則插入
                  
                   insert into TB_KCB (ERPDrugID,KCSL,UpdateTime,ERPCompanyID,GoodsID,ERPProductName)
                   values (var_goodsid,(oldstqty - NVL(:OLD.GOODSQTY,0) + nvl(:NEW.GOODSQTY,0)),
                   SYSDATE,erpcompanyid,zxgoodsid,var_goodsname);
                   COMMIT;
                        
                   END IF;
              END IF;
              
            END IF;
           
            EXCEPTION
              WHEN OTHERS THEN
                NULL;
            END;
           
          END;
          /
          (2)監(jiān)管碼上傳重復(fù)時(shí)提示重復(fù),js.ajax callback 處理response,但是成功時(shí),沒有返回response 標(biāo)簽xml數(shù)據(jù),導(dǎo)致在 IE瀏覽器中報(bào)錯(cuò)(對象為空),頁面空白。
          火狐中沒事~。。- - !>完善代碼,上傳成功也要返回reponse 標(biāo)簽xml數(shù)據(jù) <response>ok</response>

           

           

          一個(gè)事務(wù)邏輯,一定要考慮周全,”切記,切記!“

           

          posted on 2012-08-31 17:15 Dragon4s 閱讀(196) 評論(0)  編輯  收藏 所屬分類: Oracle

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          留言簿

          文章分類(6)

          文章檔案(6)

          最新隨筆

          搜索

          最新評論

          主站蜘蛛池模板: 时尚| 东乡| 中山市| 孝昌县| 桃园县| 绥阳县| 丰镇市| 会同县| 碌曲县| 孝昌县| 广丰县| 中方县| 城口县| 永城市| 元阳县| 石嘴山市| 吉安县| 鄂尔多斯市| 凤城市| 苏尼特左旗| 禹城市| 富阳市| 杭锦后旗| 玛纳斯县| 白山市| 阳西县| 江北区| 玛沁县| 张家界市| 衡东县| 应城市| 哈巴河县| 江北区| 满城县| 永丰县| 大冶市| 上思县| 香港| 丰原市| 沈阳市| 如皋市|