急,触发器问题!为什么在数据库里修改分值时组长的下平均分不会跟着变,关掉这个表后再打开这个表,里面的数据才变!

lijingxiezhuying 北京互动在线网络技术有限公司 运维经理  2004-05-08 06:44:46
CREATE TRIGGER [tri_MonitorMark] ON dbo.employee
FOR INSERT, UPDATE
AS
--组长分数(本组有固定分人员平均分*组长系数)
declare @emp_grp_ID int,@emp_Name varchar(50),@emp_Mark numeric(18,5),@emp_MarkAvg numeric(18,5)
select @emp_grp_ID=emp_grp_ID,@emp_Name=emp_Name,@emp_Mark=emp_Mark from inserted
select @emp_MarkAvg=avg(emp_Mark) from employee where emp_grp_ID=@emp_grp_ID and emp_MonitorRate=0 and emp_sc_ID=4
update employee set emp_Mark=@emp_MarkAvg*emp_MonitorRate where emp_grp_ID=@emp_grp_ID and emp_MonitorRate<>0 and emp_sc_ID=4

员工里面分几个组,一个组有一到两个组长,员工有一个固定分数,组长有一个组长系数,组长的分数为本组有固定分人员平均分*组长系数,为什么在数据库里修改分值时组长的下平均分不会跟着变,关掉这个表后再打开这个表,里面的数据才变!


...全文
43 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
danoyang 2004-07-20
xp_regread 在哪个dll里面哦,我drop掉了,现在想add回来,我怎么知道在哪个dll里面?




请大大帮忙啊
  • 打赏
  • 举报
回复
lijingxiezhuying 2004-07-20
up
  • 打赏
  • 举报
回复
lijingxiezhuying 2004-05-08
up
  • 打赏
  • 举报
回复
8992026 2004-05-08
CREATE TRIGGER [tri_MonitorMark] ON dbo.employee
FOR INSERT, UPDATE
AS
update a
set emp_Mark=b.emp_MarkAvg*a.emp_MonitorRate
from employee a,(select emp_grp_ID,emp_MarkAvg=avg(emp_Mark) from employee x,inserted i
where i.emp_grp_ID=x.emp_grp_ID
and x.emp_MonitorRate=0
and x.emp_sc_ID=4
) as b
where a.emp_grp_ID=b.emp_grp_ID
and a.emp_MonitorRate<>0
and a.emp_sc_ID=4

go

--大概是这样吧,可以处理一次修改多条记录
  • 打赏
  • 举报
回复
8992026 2004-05-08
显示的问题,不时没变,而是你没在变后查询。

不过这样的触发器是不敢恭维的,处理不了一次插入、修改多条记录的情况。

  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2004-05-08 06:44
社区公告
暂无公告