永发信息网

数据库订单表和订单详细表的触发器

答案:2  悬赏:0  手机版
解决时间 2021-12-18 17:43
  • 提问者网友:捧腹剧
  • 2021-12-18 11:04
create trigger tt_sum
on [dbo].[PurchasingDetail]
for insert,update
as
begin
update dbo.PurchasingOrders
set po_Sum =(select SUM(d_Price * d_Number)
from PurchasingDetail
where PurchasingOrders.po_ID =(select po_ID from inserted))
end

这是我的触发器代码 我想要在订单详细表里面添加新的详细订单时 订单表的总额发生改变
假设订单表004号订单总额为1000元 然后我在详细表中添加新的订单归于订单004号 金额为200元
那么订单表的004号的总额要从1000元变为1200元

现在我这个触发器的问题是数据可以改变 但是会影响所有订单的总额 就是说001号到004号的总额全变为了1200元 这可怎么是好??
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-12-18 11:54
create trigger tt_sum
on [dbo].[PurchasingDetail]
for  insert,update
as
begin 
 update dbo.PurchasingOrders
 set po_Sum =(select SUM(d_Price * d_Number) 
 from PurchasingDetail where po_ID=(select po_ID from inserted))
 where PurchasingOrders.po_ID  =(select po_ID from inserted)
 end这样试试呢
全部回答
  • 1楼网友:独行浪子会拥风
  • 2021-12-18 12:34
举个例子吧: 如: 记录表a的更新记录, 首先建立一个表:表aupdatatemp 表结构和表a相同, 然后后面要多加1列,列名就取:datatype 吧,类型为 bit 1为更新后的数据(新数据),0为更新前的数据(旧数据): 触发器代码如下: create trigger 表a_updata_tr on 表a for update as insert into 表aupdatatemp select *,1 from inserted insert into 表aupdatatemp select *,0 from deleted 当然,插入和删除数据更简单,插入只有新数据,删除只有旧数据 以上是ms-sql,oracle只有触发器头格式不一样,思路没问题
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯