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

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

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


...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
显示的问题,不时没变,而是你没在变后查询。

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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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