触发器

create or replace trigger TCScenePicClassific
  after --触发时间为操作前
INSERT OR UPDATE -- 由二种事件触发
ON SCENE_PIC_CLASSIFIC
  FOR EACH ROW -- 行级触发器
declare  
  vrowCount number(1);
   pragma autonomous_transaction;  
BEGIN
  IF INSERTING THEN
    insert into CScenePicClassific
      (ScenePicClassificid,picid, ctype, triggertime)
    values
      (:new.ScenePicClassificid,:new.picid, 0, sysdate);

  ELSE
    select count(0) into vrowCount from CScenePicClassific where ScenePicClassificid = :new.ScenePicClassificid;
    if vrowCount =0 then
      insert into CScenePicClassific
      (ScenePicClassificid,picid, ctype, triggertime)
    values
      (:new.ScenePicClassificid,:new.picid,0, sysdate);
    else
    update CScenePicClassific
       set
           picid = :new.picid,
           ctype       = 1,
           triggertime = sysdate
     where ScenePicClassificid     = :new.ScenePicClassificid;
    end if;

  END IF;
      --Add
    select count(distinct FOOTCLASSIFICID) into vrowCount from SCENE_PIC_CLASSIFIC where picid=:new.picid;
    update scene_pic set CLASSIFICPICCOUNT=vrowCount where picid=:new.picid;
    --Add end
    commit;
END;

posted @ 2016-10-19 11:12  温柔牛  阅读(158)  评论(0)    收藏  举报