关于触发器的问题 急!急!急!急!急!

zjbsaber 2008-07-23 02:13:38
我要在一个表数据insert or update是对新数据的某个字段去update另外一张表的某个字段 具体语句如下:
Create Or Replace Trigger fare_detai_gg_tri
After insert or update
on system.fare_detail_gg
for each Row
Begin
update system.doss_case_gg
set (system.doss_case_gg.fare_value) = (system.doss_case_gg.fare_value) + (select sum(system.fare_detail_gg.fare_value)
FROM system.doss_case_gg ,system.fare_detail_gg
where system.doss_case_gg.organ_id = system.fare_detail_gg.office and
system.doss_case_gg.years = system.fare_detail_gg.years and
system.doss_case_gg.service_name = system.fare_detail_gg.service_name and
system.doss_case_gg.case_num = system.fare_detail_gg.case_num and
system.fare_detail_gg.fareitem_name = '翻译费'
group by system.fare_detail_gg.office,system.fare_detail_gg.years,system.fare_detail_gg.service_name,system.fare_detail_gg.case_num,fare_detail_gg.fareitem_name);
End;


该语句不知道是否正确
如果我在oracle中执行
update system.doss_case_gg
set (system.doss_case_gg.fare_value) = (system.doss_case_gg.fare_value) + (select sum(system.fare_detail_gg.fare_value)
FROM system.doss_case_gg ,system.fare_detail_gg
where system.doss_case_gg.organ_id = system.fare_detail_gg.office and
system.doss_case_gg.years = system.fare_detail_gg.years and
system.doss_case_gg.service_name = system.fare_detail_gg.service_name and
system.doss_case_gg.case_num = system.fare_detail_gg.case_num and
system.fare_detail_gg.fareitem_name = '翻译费'
group by system.fare_detail_gg.office,system.fare_detail_gg.years,system.fare_detail_gg.service_name,system.fare_detail_gg.case_num,fare_detail_gg.fareitem_name);
也是一直在执行中犹如死循环
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjbsaber 2008-07-23
  • 打赏
  • 举报
回复
还是不行啊 我就是直接执行update 但是还是跟以前一样象死循环 我测试数据库里只有十几条数据
cosio 2008-07-23
  • 打赏
  • 举报
回复
觉得应该这样子,分步操作
Select (system.doss_case_gg.fare_value) + (select sum(system.fare_detail_gg.fare_value)
FROM system.doss_case_gg ,system.fare_detail_gg
where system.doss_case_gg.organ_id = system.fare_detail_gg.office and
system.doss_case_gg.years = system.fare_detail_gg.years and
system.doss_case_gg.service_name = system.fare_detail_gg.service_name and
system.doss_case_gg.case_num = system.fare_detail_gg.case_num and
system.fare_detail_gg.fareitem_name = '翻译费'
group by system.fare_detail_gg.office,system.fare_detail_gg.years,system.fare_detail_gg.service_name,system.fare_detail_gg.case_num,fare_detail_gg.fareitem_name;

最好加个条件
where exists(select 1 FROM system.doss_case_gg ,system.fare_detail_gg
where system.doss_case_gg.organ_id = system.fare_detail_gg.office and
system.doss_case_gg.years = system.fare_detail_gg.years and
system.doss_case_gg.service_name = system.fare_detail_gg.service_name and
system.doss_case_gg.case_num = system.fare_detail_gg.case_num and
system.fare_detail_gg.fareitem_name = '翻译费'
)

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧