mysql 触发器 分行,使用MySQL触发器更新客户余额

I need some help in understanding triggers and how they work. I have 3 tables:

Customers

Id | Balance

Invoices

Id | Custid | Amount

Payments

Id | CustId | Amount

I have an insert statement to insert the invoices:

$this->db->insert('invoices', array(

'CustomerId' => $data['customerId'],

'Description' => $data['Description'],

'DateCreated' => $data['DateCreated'],

'Amount' => $data['Amount']

));

and need to update the customers balance after the insert. Similarly, after inserting or creating a payment. I need to deduct from the clients balance.

public function createPayment($data) {

$this->db->insert('payments', array(

'CustomerId' => $data['customerid'],

'DateCreated' => date("Y-m-d H:i:s"),

'Amount' => $data['amount']

));

}

Any assistance would be appreciated in creating these triggers.

解决方案

You'll need two triggers - one for the invoice table:

delimiter //

CREATE TRIGGER add_invoice_to_balance AFTER INSERT ON invoices

FOR EACH

ROW

BEGIN

UPDATE Customers SET balance = balance + NEW.Amount

WHERE Customers.id = NEW.custid;

END;

//

delimiter;

And one for the payment table:

delimiter //

CREATE TRIGGER add_payment_to_balance AFTER INSERT ON payments

FOR EACH

ROW

BEGIN

UPDATE Customers SET balance = balance - NEW.Amount

WHERE Customers.id = NEW.custid;

END;

//

delimiter ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值