mysql5 触发器和存储过程

1. 存储过程例子如下:

名称 getcpidbycardid

in cdid int,out cpid int

BEGIN
#Routine body goes here...
SELECT
bcardtype.companyid into cpid
FROM
bcardbaseinfo
INNER JOIN bcardtype ON bcardtype.id = bcardbaseinfo.typeid
WHERE
bcardbaseinfo.id = cdid;
 
END

2. 触发器如下:

bcppay insert:

begin
set @tid:=NEW.cardid;
set @tcpshouldpay:=NEW.cpshouldpay;
set @tcpactualpay:=NEW.cpactualpay;
set @tcppaynumber:=NEW.cppaynumber;
IF  @tcpactualpay>0 && LENGTH(trim(@tcppaynumber))>0  THEN 
update `bcardstatus` set  `iscppayed`=1 where `cardid`=@tid;
call getcpidbycardid(@tid,@tcpid);
update `bcompanystatistic` set `shouldpaytotal`=(`shouldpaytotal`+ @tcpshouldpay),  `actualpaytotal`=( `actualpaytotal`+@tcpactualpay)
where companyid=@tcpid;
END IF;
end

bcppay update:

begin
set @tid:=OLD.cardid;
set @tcpshouldpay:=(NEW.cpshouldpay-OLD.cpshouldpay);
set @tcpactualpay:=(NEW.cpactualpay-OLD.cpactualpay);
call getcpidbycardid(@tid,@tcpid);
update `bcompanystatistic` set `shouldpaytotal`=(`shouldpaytotal`+ @tcpshouldpay),  `actualpaytotal`=( `actualpaytotal`+@tcpactualpay)
where companyid=@tcpid;
end


bcppay delete:

begin


set @tid:=OLD.cardid;
set @tcpshouldpay:=OLD.cpshouldpay;
set @tcpactualpay:=OLD.cpactualpay;
update `bcardstatus` set  `iscppayed`=0 where `cardid`=@tid;
call getcpidbycardid(@tid,@tcpid);
update `bcompanystatistic` set `shouldpaytotal`=(`shouldpaytotal`- @tcpshouldpay),  `actualpaytotal`=( `actualpaytotal`-@tcpactualpay)
where companyid=@tcpid;
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值