刪除第一張表的資料時,修改第二張表的相關欄位的數值
表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