兄弟们拉我一把,帮忙看看这个触发器怎么写?

jnpc188 2001-11-28 10:47:04
表一(table1)
学生成绩表:
key id course
1 1 20
2 1 10
3 1 30
4 2 10
5 2 10
6 2 20
7 2 10
8 3 10
9 3 30
表二(table2)
学生成绩汇总表:
key id sum_course
1 1 60
2 2 50
3 3 40

现在要求用触发器维护两表之间的关系。
要求:当table1表增加一条id为1,course为50
的记录时,要求table2中的的id为1的sum_course变为 110(50+60)
如果table1表中id为1,key为1的记录course改为10,要求table2
中的id为1的记录变为50(60-10).
同时,如果table1中删除key = 1,id = 1 的记录,那么table2中的
id= 1的记录sum_course变为30(50-20)
如果table1中新增一条记录
key id course
10 4 50
因为table2中不存在id = 4 的记录,所以要求在table2中也增加
一条记录
key id sum_course
4 4 50


请大家帮忙写一下这个触发器,数据库是ASA 6.03

我只有20分好用,希望不要嫌弃。谢谢!
...全文
83 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jnpc188 2001-11-28
  • 打赏
  • 举报
回复
不好意思,我不太会给分,再试一把。
jnpc188 2001-11-28
  • 打赏
  • 举报
回复
给分
jnpc188 2001-11-28
  • 打赏
  • 举报
回复
to: callingda(林丁) 
谢谢你的回答,我先回去试试,分我先给了。有问题再来麻烦您。
//bow
同时谢谢最后一滴水.你是个好同志。
am2000 2001-11-28
  • 打赏
  • 举报
回复
不能写到一起吗
  • 打赏
  • 举报
回复
對了,還有一個更改的請你自己寫了
  • 打赏
  • 举报
回复
// 新增
create trigger dba.trigger1 after insert order 1 on
DBA.table1
referencing new as new_name
for each row
begin
declare @newkey integer;
if exist select id from table2 where id = new_name.id then // 如果已有
update table2 set sum_course = sum_course + new_name.course
where table2.id = new_name.id
else
select max(key)+1 into @newkey from table2;
insert into table2(key,id,sum_course) values (@newkey,new_name.id,new_name.course)
end if
end
// 刪除
create trigger dba.trigger2 after delete order 2 on
DBA.table1
referencing old as old_name
for each row
begin
update table2 set sum_course = sum_course - new_name.course
where table2.id = new_name.id
end

chang188 2001-11-28
  • 打赏
  • 举报
回复
你可以在table1改变后,把table2删掉,重新生成!!
(具体的就自己写吧,很简单的)
发帖
PowerBuilder

1028

社区成员

PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
帖子事件
创建了帖子
2001-11-28 10:47
社区公告
暂无公告