使用 MySQL 触发器更新客户余额
Using MySQL triggers to update customers balance
我需要一些帮助来理解触发器及其工作原理。我有 3 个表:
Customers
Id | Balance
Invoices
Id | Custid | Amount
Payments
Id | CustId | Amount
我有插入发票的插入语句:
$this->db->insert('invoices', array(
'CustomerId' => $data['customerId'],
'Description' => $data['Description'],
'DateCreated' => $data['DateCreated'],
'Amount' => $data['Amount']
));
并且需要在插入后更新客户余额。同样,在插入或创建付款后。我需要从客户余额中扣除。
public function createPayment($data) {
$this->db->insert('payments', array(
'CustomerId' => $data['customerid'],
'DateCreated' => date("Y-m-d H:i:s"),
'Amount' => $data['amount']
));
}
如果您能协助创建这些触发器,我们将不胜感激。
您需要两个触发器 - 一个用于发票 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;
还有一个用于付款 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 ;
我需要一些帮助来理解触发器及其工作原理。我有 3 个表:
Customers
Id | BalanceInvoices
Id | Custid | AmountPayments
Id | CustId | Amount
我有插入发票的插入语句:
$this->db->insert('invoices', array(
'CustomerId' => $data['customerId'],
'Description' => $data['Description'],
'DateCreated' => $data['DateCreated'],
'Amount' => $data['Amount']
));
并且需要在插入后更新客户余额。同样,在插入或创建付款后。我需要从客户余额中扣除。
public function createPayment($data) {
$this->db->insert('payments', array(
'CustomerId' => $data['customerid'],
'DateCreated' => date("Y-m-d H:i:s"),
'Amount' => $data['amount']
));
}
如果您能协助创建这些触发器,我们将不胜感激。
您需要两个触发器 - 一个用于发票 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;
还有一个用于付款 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 ;