mysql-两表级联同步更新两个表中的一列数据

项目说明:

近期我们所做的一个项目有以下的需求:表1:search_tutor  表2:pro_money_info

已知:search_tutor 其中一个字段的有一个导师的项目卡的余额:xmye

          pro_money_info  其中也有一个字段:xmye

但是只有search_tutor里面的数据是从权威的地方拉过来的(财务处),所以项目xmye,在search_tutor进行更新时,那么pro_money_info 也要进行相应的更新,这就需要两个表的级联操作,同时更新这个字段的数据。

我们的两个表都是这个数据库里面的表:yjs_zyjt(数据库名)

业务实现:


 delimiter //
create procedure test()
    begin
        update yjs_zyjt.pro_money_info p,yjs_zyjt.search_tutor_project s set p.XMYE = s.XMYE where s.GH = p.XMFZRGH and s.XMKH = p.XMKH;
    end//
delimiter ;
# 设置定时器
drop event if exists test_event;
create event test_event
on schedule every 1 minute
STARTS now()
do call test();
# 打开定时器
show variables like 'event_scheduler';
set global event_scheduler='on';

每一分钟执行一次,级联更新的操作。



如果想要关闭定时器:
# 清除定时器数据
drop event if exists truncate_event;
create event truncate_event
on schedule every 1 week
do truncate a;
# 关闭数据库的无主键无法更新模式
SET SQL_SAFE_UPDATES = 0;


 

 

假设a和ac是通过某个字段关联的,比如a表中有一个字段a_id,ac表中也有一个字段a_id,示ac表中的记录与a表中的记录是相关联的。那么可以通过以下步骤实现级联更新: 1. 在a表中创建一个触发器,当a表中的某个字段发生更改时,查询ac表中与之相关的记录并更新它们。触发器可以使用以下代码实现: ``` CREATE TRIGGER update_ac ON a AFTER UPDATE AS BEGIN UPDATE ac SET ac_field1 = inserted.a_field1, ac_field2 = inserted.a_field2, ... FROM ac INNER JOIN inserted ON inserted.a_id = ac.a_id END ``` 其中,update_ac是触发器的名称,a_field1、a_field2等是a表中需要更新的字段,ac_field1、ac_field2等是ac表中需要更新的字段,可以根据实际情况进行修改。 2. 在ac表中创建一个触发器,当ac表中的某个字段发生更改时,查询a表中与之相关的记录并更新它们。触发器可以使用以下代码实现: ``` CREATE TRIGGER update_a ON ac AFTER UPDATE AS BEGIN UPDATE a SET a_field1 = inserted.ac_field1, a_field2 = inserted.ac_field2, ... FROM a INNER JOIN inserted ON inserted.a_id = a.a_id END ``` 其中,update_a是触发器的名称,a_field1、a_field2等是a表中需要更新的字段,ac_field1、ac_field2等是ac表中需要更新的字段,可以根据实际情况进行修改。 需要注意的是,以上代码仅供参考,具体的实现方式可能会因为结构和数据关系的不同而有所不同,需要根据具体情况进行编写。同时,级联更新可能会导致性能问题,需要进行测试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值