我有一个名为 Student 的表,如图所示
当我输入科目的分数值时,我想找到总计和平均值自动显示在各自的列中,如果我想通过使用查询手动在总计和平均值列中插入值,它应该显示错误。
最佳答案
如果您的 mysql 版本支持生成列,那么您可以使用此功能。如果您尝试插入到生成的列,Mysql 将抛出错误。例如。
drop table if exists t;
create table t(id int, s1 int,s2 int, total int as (ifnull(s1,0)+ifnull(s2,0)));
insert into t(id,s1,s2) values (1,10,20);
Query OK, 1 row affected (0.03 sec)
insert into t(id,s1,s2,total) values (2,20,null,5);
ERROR 1906 (HY000): The value specified for computed column 'total' in table 't' ignored
select * from t;
+------+------+------+-------+
| id | s1 | s2 | total |
+------+------+------+-------+
| 1 | 10 | 20 | 30 |
+------+------+------+-------+
1 row in set (0.00 sec)
一般来说,您不应该存储可以计算的项目。另请注意 ifnull 测试。您的问题并不涉及所有科目是否都有值,因此您应该对总计和平均的可能性进行编码。
关于mysql - 数据库 MYSQL Sum 和 Avg 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52577294/