TR_COURSERESTRICTION_UPDATE_DELETECOURSEGRADINGMARKINGCOLUMN

Definition

Copy


                    --similar trigger is on MARKINGCOLUMNTERM, COURSERESTRICTIONSTARTTERM tables

                    CREATE trigger TR_COURSERESTRICTION_UPDATE_DELETECOURSEGRADINGMARKINGCOLUMN 
                    on dbo.COURSERESTRICTION                    
                    after update
                    not for replication        
                    as begin
                        declare @COURSERESTRICTIONID uniqueidentifier

                        if update(LENGTHINTERMS)
                        begin

                            declare @ChangeAgentID uniqueidentifier
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENTFROMCONTEXT @ChangeAgentID output

                            --Cache current context information 

                            declare @CONTEXTCACHE varbinary(128); 
                            set @CONTEXTCACHE = CONTEXT_INFO(); 

                            --Set CONTEXT_INFO to @CHANGEAGENTID 

                            if @CHANGEAGENTID is not null 
                              set CONTEXT_INFO @CHANGEAGENTID

                            delete dbo.COURSEGRADINGMARKINGCOLUMN from dbo.COURSEGRADINGMARKINGCOLUMN
                            inner join dbo.COURSEGRADING 
                                on COURSEGRADINGMARKINGCOLUMN.COURSEGRADINGID = COURSEGRADING.ID                            
                            inner join dbo.COURSE 
                                on COURSEGRADING.COURSEID = COURSE.ID
                            inner join dbo.COURSERESTRICTION 
                                on COURSEGRADING.STARTDATE = COURSERESTRICTION.STARTDATE and COURSEGRADING.ENDDATE = COURSERESTRICTION.ENDDATE and COURSEGRADING.COURSEID = COURSERESTRICTION.COURSEID
                            inner join dbo.MARKINGCOLUMN 
                                on COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMN.ID
                            inner join inserted I on COURSERESTRICTION.ID = I.ID
                            inner join deleted D on I.ID = D.ID
                            where (D.LENGTHINTERMS > I.LENGTHINTERMS) and 
                                (MARKINGCOLUMN.ALLTERMS = 0) and
                                not exists 
                                    (select * from dbo.UFN_COURSERESTRICTION_VALIDDATESBYLENGTHINTERMS(COURSEGRADING.STARTDATE, COURSEGRADING.ENDDATE, COURSEGRADING.COURSEID) CRTERMS
                                    inner join dbo.TERM on TERM.STARTDATE >= CRTERMS.STARTDATE and TERM.ENDDATE <= CRTERMS.ENDDATE
                                    inner join dbo.SESSION on TERM.SESSIONID = SESSION.ID and SESSION.ID = dbo.UFN_SESSION_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, COURSEGRADING.STARTDATE, COURSEGRADING.ENDDATE)
                                    inner join dbo.MARKINGCOLUMNTERM on TERM.TERMNAMECODEID = MARKINGCOLUMNTERM.TERMNAMECODEID
                                    where MARKINGCOLUMNTERM.MARKINGCOLUMNID = MARKINGCOLUMN.ID)


                            --Reset CONTEXT_INFO to previous value 

                            if not @CONTEXTCACHE is null 
                              set CONTEXT_INFO @CONTEXTCACHE;

                         end
                    end