[高分]主从表间的触发器如何写?

fs_windy 2007-01-15 04:49:43
主表M(ID,VC,VN), 从表D(ID,P,P1), 关联字段ID

现从表D中有一个价格字段P需要触发器进行这样的计算

1. 主表M中字段VC为'01'时,才进行触发计算;
2. 从表D字段P=字段P1*1.05;
3. 从表D的更新,只针对单行记录。

该如何写?
...全文
248 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
marco08 2007-01-16
  • 打赏
  • 举报
回复
--try

create trigger tr on D
for update
as
if update(P1)
update D set D.P=D.P1*1.05
from inserted as A, M
where M.VC='0.1' and M.ID=D.ID and D.ID=A.ID
feixiangVB 2007-01-16
  • 打赏
  • 举报
回复
搬張凳子來學習~~~
fs_windy 2007-01-16
  • 打赏
  • 举报
回复
我想能不能控制到只更新从表部份记录,也就是说从表D中,只有更改过P1值的单行明细记录,根据上述条件进行该行价格计算
steedqwe 2007-01-15
  • 打赏
  • 举报
回复
给多少分啊?我是骗分得.呵呵^
rookie_one 2007-01-15
  • 打赏
  • 举报
回复
引自楼主:
1. 主表M中字段VC为'01'时,才进行触发计算;
子陌红尘 2007-01-15
  • 打赏
  • 举报
回复
从表D 怎么对 主表M 更新?
fs_windy 2007-01-15
  • 打赏
  • 举报
回复
怎么都在把触发器设到M表里? 我要求是在D表里的,可以吗?
子陌红尘 2007-01-15
  • 打赏
  • 举报
回复
create trigger trg_M on M
instead of insert,update
as
begin
update D set P=P1/1.05 from deleted t where t.ID=D.ID and t.VC='01'

update D set P=P1*1.05 from inserted t where t.ID=D.ID and t.VC='01'
end
go
marco08 2007-01-15
  • 打赏
  • 举报
回复
--try

create trigger tr on M
for insert, update
as
update D set P=P1*1.05
from inserted as A
where A.VC='0.1' and D.ID=A.ID

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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