您好,欢迎访问一九零五行业门户网

剔除第一张表的数据时,修改第二张表的相关字段的数值

删除第一张表的数据时,修改第二张表的相关字段的数值
表xf
xf_id       vip        total
1            1           10
2            1           100
3            2           80
4            3           50
表vip
vip          jifen
 1          1000
 2           500
 3           800
$sql = delete from  . $fdyu->table('xf') .
           where xf_id  . db_create_in(join(',', $_post['checkboxes'])) .    //假如$_post['checkboxes']就是xf_id:1,2,3,4
            and school_id= . $school_id;
          $db->query($sql);
那么在删除xf_id的同时,表vip里的
1   jifen=1000-110=890     如果xf里有多个一样的vip,则减去总和,如xf表里vip为1的有两条数据,他们的total和是110,
                          则减110
2   jifen=500-80=420
3   jifen=800-50=750
也就是说在删除表xf 里的数据的同时,表vip里的jifen要减去xf表里的total
------解决方案--------------------
大概思路
1.先获取要删除记录的vip,和每个vip共删除的总分
select vip,sum(total) from xf where xf_id in(1,2,3,4) group by vip;
保存为数组
vip为key
total为value
$arr = array(
'1' => 110,
'2' => 80,
'3' => 50
);
2.删除对应xf_id的记录
delete from xf where xf_id in(1,2,3,4);
3.修改vip表
foreach($arr as $vip=>$total){
update vip set jifen=jifen-$total where vip=$vip
}
------解决方案--------------------
可以考虑用触发器,在mysql执行,给你一个例子:
create trigger delete_jifen before delete on jifen
for each row
begin
update users set users.sum = users.sum -
(select sum(jifen.jifen) from jifen where jid = old.jid) where users.userid = old.userid;
end

其它类似信息

推荐信息