mysql触发器——修改tableA表的field1字段影响tableB表的field2字段

mysql触发器

有时候一个字段的修改会影响另外一个字段的数据,这时候用java就需要书写较多的代码,如果用mysql自带的触发器将会变得很简单。

案例: 应收明细表的应收金额被修改后,修改应收账单表的确认字段为未确认。

sql实现:

-- 创建一个触发器
create trigger fin_receivable_bill_update_trigger after update on fin_receivable for each row
begin
		-- 定义变量 取自fin_receivable 表里面的字段
        DECLARE related_id bigint;
        -- 判断新旧值是否相等
        if (OLD.un_received_amount != NEW.un_received_amount) then
        	-- 修改应收账单表的确认字段
            update fin_receivable_bill set is_confirm_bill = 1002
                where is_deleted = 0 and id in (
                select bill_id from fin_receivable_bill_item 
                where is_deleted = 0 and receivable_id = related_id
                );
end;

解释:

  1. 创建触发器:create trigger 触发器的名字:fin_receivable_bill_update_trigger
  2. 目标表执行修改操作之后:after update fin_receivable
  3. 判断字段新旧值不一样:if(OLD.un_received_amount != NEW.un_received_amount)
  4. 定义变量:DECLARE related_id bigint;
  5. 执行具体的业务逻辑:update fin_receivable_bill set is_confirm_bill = 1002 where is_deleted = 0 and id in ( select bill_id from fin_receivable_bill_item where is_deleted = 0 and receivable_id = related_id);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java知识技术分享

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值