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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章