永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-12-18 17:43
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元 这可怎么是好??
最佳答案
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这样试试呢
全部回答
举个例子吧: 如: 记录表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只有触发器头格式不一样,思路没问题
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
豫人张氏者,其先齐人。明末齐大乱,妻为北兵
巧格锁住车把了钥匙掉了怎么换锁
单选题20+80=A.29B.51C.85D.100
布吉高级中学旁的南岭村校服专卖什么时候开门
西亚各国经济的共同特点是A.石油工业发达B.灌
云联惠开通左会员怎样删除
English Language and Culture ProgramIf you
既克,公问其故。对曰:“夫战,勇气也。一鼓
我们去爬山怎么样用英语怎么翻译
南通新苑华庭物业
在古代,六部中的工部,是不是又可称作水部?
单选题宣扬只有儒家的“先王之道”和“仁义之
属龙人命犯天狗星怎么办?
-17+17÷(-2+1)17-52×(-0.2)3.
阴戚满蓄搭碴的意思
推荐资讯
全顺汽车涡轮增压器坏了。必须换么。
体育课是我国全日制学校开设的必修课之一吗?
仲达派出所办公位置在哪啊?好找么?
You needn’t take an umbrella. It isn’t g
金子有什么好看的书
洋县地税局位置在什么地方啊,我要过去办理业
单选题Excuseme,canyou________methewayt
天津教师资格证考试改革的过渡时间是?
塞舌尔与大溪地到底哪个更美啊?更给力?
QQ邮箱怎么设置才能登陆谷歌邮箱?
如何去除床垫上的螨虫
用javawebjavascripthtml知识做一个简单的bbs
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?