触发器

 

 

 

 

CREATE DEFINER=`root`@`%` TRIGGER `carXhistory` AFTER UPDATE ON `carXvalue` FOR EACH ROW BEGIN
  set @backup = (select needbackup from carXname where carXname.id = new.Xnameid);
  set @valuetype = (select Valuetype from carXname where carXname.id = new.Xnameid);
  set @unit = (select measurementunit from carXname where carXname.id = new.Xnameid);
  set @name = (select XnameCN from carXname where carXname.id = new.Xnameid);
  set @Xtype = (select Xtype from carXname where carXname.id = new.Xnameid);
  if (@backup = 'Yes' and @valuetype = 'Int' and new.vaule IS NOT NULL and new.updateTime != old.updateTime) then
   insert into carXhistory(Xvalueid,createTime,vaule,Xnameid,carid,measurementunit,XnameCN,Xtype) values (new.id,NOW(),new.val,new.Xnameid,new.carid,@unit,@name,@Xtype);
  end if;
END

CREATE DEFINER=`root`@`%` TRIGGER `tub_carXvalue` BEFORE UPDATE ON `carXvalue` FOR EACH ROW begin
  SET @CNT = (select count(*) from carXname where Xnamecn = '车轮运行时间' and id = new.Xnameid);
  IF @CNT > 0 and old.val != new.val THEN
    SET @LAMBCNT = (select count(*) from wheelusecount where carid = new.carid );
    SET @MAXID = (select max(id) from wheelusecount where carid = new.carid);
    SET @LAMBTYPE = (select val from carXvalue,carXname where carid = new.carid and carXValue.Xnameid
      = carXname.id and carXname.Xnamecn = '车轮型号' );
    IF old.val > new.val + 100 THEN
      insert into wheelusecount(carid,wheeltype,val,updateTime) values (new.carid,@LAMBTYPE,new.val,now());
    ELSE
      IF @LAMBCNT > 0 THEN
        update wheelusecount set val = new.val,updateTime = now(),wheeltype=@LAMBTYPE where id = @MAXID;
      ELSE
        insert into wheelusecount(carid,wheeltype,val,updateTime) values (new.carid,@LAMBTYPE,new.val,now());
      END IF;
    END IF;
  END IF;
end

  

 

posted @ 2018-10-29 19:59  papering  阅读(391)  评论(0编辑  收藏  举报