2

我有问题

想问一下,rekap_nilai表已经录入的数据怎么改。这是表是rekapan rekap_nilai 表nilai_student 的总和。

我根据触发器输入表 B

mysql> select * from nilai_student;
+----+-------+------+--------+
| 编号 | 姓名 | idmp | 汝来 |
+----+-------+------+--------+
| 1 | 乌丁 | 1 | 80 |
| 2 | 乌丁 | 2 | 60 |
| 3 | 妈妈 | 1 | 75 |
+----+-------+------+--------+

表rekap_nilai

mysql> desc rekap_nilai;
+-----------+-------------+------+-----+--------- +----------------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+-----------+-------------+------+-----+--------- +----------------+
| 编号 | 整数(11) | 否 | 优先级 | 空 | 自动增量 |
| 学生 | 整数(11) | 是 | | 空 | |
| 姓名 | varchar(100) | 是 | | 空 | |
| 汝来 | 双 | 是 | | 空 | |
+-----------+-------------+------+-----+--------- +----------------+
mysql> select * from rekap_nilai;
+----+------------+-------+--------+
| 编号 | 学生 | 姓名 | 汝来 |
+----+------------+-------+--------+
| 1 | 1 | 乌丁 | 140 |
| 2 | 2 | 妈妈 | 75 |
+----+------------+-------+--------+
2 行(0.00 秒)

如果有补习学生行为,当更新nilai 列中的表nilai_student时,会自动在 nilai 列中的表 rekap_nilai 中更新

例子

现在名称“Udin”在id 2 中有nilai 60 ,他想要补救。当他进行补救时,我想更新他的 nilai = 70 ,然后在表 rekap_nilai 中。udin 自动更新为nilai = 150

4

1 回答 1

1

您可以编写一个在更新表时执行的触发器,nilai_student如下所示

Delimiter ///
create trigger update_rekap_nilai after update on nilai_student 
for each row begin
update recap_nilai set nilai = nilai - Old.nilai + New.nilai where name=Old.name
end;
///
Delimiter ;

希望这可以帮助 !!

于 2013-04-08T10:43:33.830 回答