还是写触发器的问题

lastsky 2001-12-11 09:44:54
表cc:字段如下:
pid varchar(6)
cquantity decimal(12)

表dd :字段如下
pid varchar(6)
dquantity decimal(12)

实现要求:
当往表CC里插入删除,或修改一条数据时,如(tom,200)
就应该实现
1 select sum(cquantity) as rs from cc where pid='tom'

2 update dd set dquantity=rs where pid='tom'
请注意两个pid的关联

该如何写这个触发器

...全文
78 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2001-12-12
  • 打赏
  • 举报
回复
sorry,多了个尾巴!

create TRIGGER tr_CC
on CC
for insert,delete,update
as

update dd set dquantity=t.rs
from dd,(
select pid,sum(cquantity) as rs from cc where pid in (select pid from inserted union select pid from deleted)
group by pid
) t
where t.pid=dd.pid

go


昵称被占用了 2001-12-12
  • 打赏
  • 举报
回复
create TRIGGER tr_CC
on CC
for insert,delete,update
as

update dd set dquantity=t.rs
from dd,(
select pid,sum(cquantity) as rs from cc where pid in (select pid from inserted union select pid from deleted)
group by pid
) t
where t.pid=dd.pid

go


2 update dd set dquantity=rs where pid='tom'

lastsky 2001-12-12
  • 打赏
  • 举报
回复
TO HAIWER ,vfp_database:
dd表里的dquantity是对应的相同pid的表cc里的cquantity之和
所以不管插入,修改,还是删除,都会影响dquantity的值。
用程序代码实现很麻烦,所以我才想用触发器实现。
TO echo_llee:
UPDATE DD SET dquantity=sum(cquantity) from cc,DD where CC.pid='tom' AND DD.pid=CC.pid
里 CC.pid='tom'如果把tom值换成变量,该如何写?

另:我用的是MSSQLSERVER2000。
多谢!


echo_llee 2001-12-11
  • 打赏
  • 举报
回复
CC 表里有的 DD 表中一定有吗?若是往CC里插入一条新纪录,DD中是否也应插入呢?两个表的纪录是不是同时插入的?
试试这句话,当你往cc里插入完时,执行下面这句话。
UPDATE DD SET dquantity=sum(cquantity) from cc,DD where CC.pid='tom' AND DD.pid=CC.pid
vfp_database 2001-12-11
  • 打赏
  • 举报
回复
就是呀,没有写清楚怎么帮你哦。
昵称被占用了 2001-12-11
  • 打赏
  • 举报
回复
用"触发器"找以前的贴,能找到很多!

另外,你的逻辑不清楚,难道你要记录最后一条插入到CC的数据到DD?
删除、修改CC表的时候怎么办?
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2001-12-11 09:44
社区公告
暂无公告