SQLServer 新增数据时触发器自动计算并更新相关值
USE [Jiao]
GO
/****** Object: Trigger [dbo].[tri_ds_insert] Script Date: 01/14/2015 22:22:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[tri_ds_insert]
ON [dbo].[t_DynamicScore]
for INSERT
AS
BEGIN
--定义变量
declare @Teaching int,--教学总分
@Environmental int,--环境总分
@Cars int,--车辆总分
@Teacher int,--教练总分
@sumsum int,--评分总条数
@teacsum int,--对某位教练评论的总条数
@SchoolID varchar(50),--驾校ID
@TeacherID varchar(50);--教师ID
--在inserted表中查询已经插入记录信息
select @SchoolID = SchoolID,@TeacherID = TeacherID from inserted;
--获得教学总分
select @Teaching=SUM(Teaching) from t_DynamicScore where SchoolID=@SchoolID;
--环境总分
select @Environmental=SUM(Environmental) from t_DynamicScore where SchoolID=@SchoolID;
--车辆总分
select @Cars=SUM(Cars) from t_DynamicScore where SchoolID=@SchoolID;
--教练总分
select @Teacher=SUM(Teacher) from t_DynamicScore where TeacherID=@TeacherID;
--获得教学打分的数量
select @sumsum=COUNT(id) from t_DynamicScore where SchoolID=@SchoolID;
--对某位教练评分的总条数
select @teacsum=COUNT(id) from t_DynamicScore where TeacherID=@TeacherID;
--除法,小数点后保留4位,为该驾校最新的教学DSR
update t_DSchool set Teaching=CONVERT(decimal(8,4),@Teaching*1.0000/@sumsum),--这里乘以1.0000就为了得到的数据精确到小数点后4位
Environmental=CONVERT(decimal(8,4),@Environmental*1.0000/@sumsum),
Cars=CONVERT(decimal(8,4),@Cars*1.0000/@sumsum)
where ID=@SchoolID;
update t_Teacher set DSR=CONVERT(decimal(8,4),@Teacher*1.0000/@teacsum) where ID=@TeacherID;
END
————————————————
版权声明:本文为CSDN博主「云上人间钦自赏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/moniteryao/article/details/42718951
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)