phpmyadmin SQL:设置触发器以获取行的总和

6tr1vspr  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(140)

这是结果表:

student_id | subject_id  | get_ca1  | get_ca2  | get_exam | get_total
----------------------------------------------------------------------
   101     |     1       | 10       | 7        | 10       |
   102     |     2       | 5        | 5        | 10       |
   103     |     1       | 9        | 10       | 4        |
   101     |     1       | 8        | 10       | 10       |
   103     |     2       | 2        | 10       | 10       |
   104     |     1       | 7        | 8        | 5        |
   101     |     2       | 7        | 8        | 5        |

我想创建一个触发器,该触发器将对get_ca1 + get_ca2 ...+ get_exam行求和,并将总和存储在get_total列中。当插入get_ca1, get_ca2,... get_exam行时,触发器应计算总和并将其存储在get_total列中。
我今天刚学了触发器,所以我对它一点也不了解。但是到目前为止,我试过了,当然它抛出了一个错误。

CREATE TRIGGER `sum total ` AFTER INSERT ON `exam_group_exam_results`
FOR EACH ROW SET get_tot_score = (get_ca1 + get_ca2 + get_ca3 + get_ca4 + get_ca5 + get_ca6 + get_exam);
yzckvree

yzckvree1#

Mysql不知道你的列在哪里,因为你缺少对NEW行的引用。
此外,您只能在插入行之前更改值
所以使用了

CREATE TRIGGER `sum_total_before_INSERT` BEFORE INSERT ON `exam_group_exam_results`
FOR EACH ROW 
SET NEW.get_tot_score = (NEW.get_ca1 + NEW.get_ca2 + NEW.get_ca3 + NEW.get_ca4 + NEW.get_ca5 + NEW.get_ca6 + NEW.get_exam);

相关问题