触发器--单独字段变化另一个字段也变化

USE [nmgdl]
GO
/****** Object:  Trigger [dbo].[trg_NonExamCourse]    Script Date: 02/28/2015 11:31:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create TRIGGER [dbo].[trg_NonExamCourse]
ON [dbo].[Relation_User_Course]
FOR UPDATE
AS
IF UPDATE(StudyTimes)
    BEGIN
        DECLARE 
        @jdconfig decimal(18,0), --课程进度参数(Course表中值)
        @jdstudy decimal(18,0), --已经学习的进度
        @totalscore1 decimal(18,1), --一门课程的学分
        @coursetime1 decimal(18,1), --一门课程的总课时长
        @userid1 nvarchar(36), --用户ID
        @courseid1 nvarchar(36), --课程ID
        @gradeid1 nvarchar(36), --班级ID
        @ispassed INT,--是否已经课程通过
        @totalscore2 decimal(18,1),--该学员已经取得的学分
        @coursetime2 decimal(18,1) --该学员已经学习的总时长
        SELECT @jdconfig=t.IsExam,@totalscore1=t.CourseScore,@coursetime1=t.CourseTime,
        @jdstudy=t2.StudyTimes,@userid1=t2.userid,@courseid1=t2.courseid,@ispassed=t2.Passed,@gradeid1=t2.GradeID
        FROM dbo.Course t,INSERTED t2 WHERE t.ID=t2.CourseID AND t.PassMethod=1;
        
        SELECT @totalscore2=TotalScore,@coursetime2=TotalCourseTime FROM dbo.Relation_Grade_User WHERE GradeID=@gradeid1 AND UserID=@userid1;
        IF(@jdconfig<=@jdstudy)
            BEGIN
            IF(@ispassed=0 or @ispassed is null)
                BEGIN
                    UPDATE dbo.Relation_Grade_User SET TotalScore=@totalscore1+@totalscore2,TotalCourseTime=@coursetime1+@coursetime2 WHERE UserID=@userid1 AND GradeID=@gradeid1;
                    UPDATE dbo.Relation_User_Course SET Passed=1 WHERE UserID=@userid1 AND CourseID=@courseid1;
                END
            END
    END

 

posted on 2015-02-28 16:45  潺潺水声  阅读(257)  评论(0)    收藏  举报

导航