【发布时间】:2020-11-07 18:20:50
【问题描述】:
我正在使用 MariaDB 版本 10.2.22
我有一个分类帐表,可以通过下面的 sql 代码定义:
CREATE TABLE ledger (
tr_id int AUTO_INCREMENT NOT NULL COMMENT 'Transaction ID ( Primary Key)',
cust_id int NOT NULL COMMENT 'Customer ID',
`date` date NOT NULL COMMENT 'Transaction date',
credit decimal(10,2) DEFAULT NULL COMMENT 'Credit - paid in',
debit decimal(10,2) DEFAULT NULL COMMENT 'Debit - Money paid out',
balance decimal(10,2) DEFAULT NULL COMMENT 'Bank Balance = Credt-debit + bank Balance of previous record of the same customer ID',
/* Keys */
PRIMARY KEY (tr_id)
) ENGINE = InnoDB;
我已手动填表并手动输入余额。
I tr_id I cust_id I date I credit I debit I balance I
-------------------------------------------------------------------------------------------
I 1 I 100 I 2020-07-01 I 1000.00 I I 1000.00 I
I 2 I 500 I 2020-07-02 I 2000.00 I I 2000.00 I
I 3 I 100 I 2020-07-03 I I 200.00 I 800.00 I
I 4 I 500 I 2020-07-04 I I 500.00 I 1500.00 I
每条记录的余额=(贷方-借方)+同一个cust_id的最后余额
我想在 cust_id、日期、贷方或借方字段中插入值时自动更新余额列。 是否可以定义一个触发器,当贷方字段或借方字段的值发生变化时自动更新余额字段?我想获取此类函数的 SQL 代码。 谢谢你的期待
【问题讨论】:
-
"...last Balance" -- 如果
date列对于每个客户来说不是唯一的,则可能会出现问题。
标签: mysql mariadb database-trigger insert-update