mySQL 5.7-计算列/触发器函数

mySQL 5.7-计算列/触发器函数,mysql,triggers,Mysql,Triggers,我需要在mySQL表中做简单的数学运算 我有桌上付款 带字段:正常、罚款、退款和尝试添加未归档的文件,这将是正常+罚款+退款 付款代码\u tbl: create table payment_tbl ( payment_id INT (10) PRIMARY KEY AUTO_INCREMENT, payment_amount decimal (5,2) not null, payment_date DATE not null, normal decimal (5,2) not null,

我需要在mySQL表中做简单的数学运算

我有桌上付款 带字段:正常、罚款、退款和尝试添加未归档的文件,这将是正常+罚款+退款

付款代码\u tbl:

create table payment_tbl (
payment_id INT (10) PRIMARY KEY AUTO_INCREMENT, 
payment_amount decimal (5,2) not null, 
payment_date DATE not null,
normal decimal (5,2) not null,
penalty decimal (5,2) not null,
refund decimal (5,2) not null,
out decimal (5,2));

INSERT into payment_tbl (
payment_amount, 
payment_date, 
normal, 
penalty,
refund)
values ('5.55', '2015-05-05', '5.55','0', '0');

因此,我试图将该列作为所有三笔付款的总和列出?

以下是有关以下内容的文档:


我将
out
列的定义修改为其他3列的总和。您不需要触发器。

您可以在该查询的上添加列。如果使用持久查询,还可以在此列上添加索引

ALTER TABLE payment_tbl
ADD COLUMN `out` DECIMAL(5,2) AS ( normal + penalty + refund)  VIRTUAL;

ALTER TABLE payment_tbl
ADD COLUMN `outp` DECIMAL(5,2) AS ( normal + penalty + refund)  PERSISTENT;

我也尝试过类似的方法,但得到了相同的错误:错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解第8OUT行中使用“out decimal(5,2)AS(normal+惩罚+退款))”的正确语法是MySQL保留关键字。你必须把它包在背上。请参阅上面我的更新答案。见:
ALTER TABLE payment_tbl
ADD COLUMN `out` DECIMAL(5,2) AS ( normal + penalty + refund)  VIRTUAL;

ALTER TABLE payment_tbl
ADD COLUMN `outp` DECIMAL(5,2) AS ( normal + penalty + refund)  PERSISTENT;