TR_COURSERESTRICTIONSTARTTERM_INSERTDELETE_DELETECOURSEGRADINGMARKINGCOLUMN
Definition
Copy
--similar trigger is on MARKINGCOLUMNTERM, COURSERESTRICTION tables
CREATE trigger TR_COURSERESTRICTIONSTARTTERM_INSERTDELETE_DELETECOURSEGRADINGMARKINGCOLUMN
on dbo.COURSERESTRICTIONSTARTTERM
after insert, delete
not for replication
as 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.[SESSION]
on [SESSION].ID = dbo.UFN_SESSION_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, COURSEGRADING.STARTDATE, COURSEGRADING.ENDDATE)
inner join dbo.MARKINGCOLUMN
on COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMN.ID
left outer join inserted I
on I.COURSERESTRICTIONID = COURSERESTRICTION.ID
left outer join deleted D
on D.COURSERESTRICTIONID = COURSERESTRICTION.ID
where (I.COURSERESTRICTIONID is not null or D.COURSERESTRICTIONID is not null)
and MARKINGCOLUMN.ALLTERMS = 0 --specific terms
and not exists
(select 1
from dbo.COURSERESTRICTIONSTARTTERM
inner join dbo.COURSERESTRICTION
on COURSERESTRICTIONSTARTTERM.COURSERESTRICTIONID = COURSERESTRICTION.ID
inner join dbo.TERM
on TERM.STARTDATE >= COURSERESTRICTIONSTARTTERM.STARTDATE
and TERM.ENDDATE <=
(select max(CRTERMS.ENDDATE)
from (select top (COURSERESTRICTION.LENGTHINTERMS) ENDDATE
from dbo.TERM
where
TERM.SESSIONID = [SESSION].ID and
TERM.ENDDATE >= COURSERESTRICTIONSTARTTERM.ENDDATE
order by TERM.ENDDATE asc) CRTERMS)
and TERM.SESSIONID = [SESSION].ID
inner join dbo.MARKINGCOLUMNTERM on TERM.TERMNAMECODEID = MARKINGCOLUMNTERM.TERMNAMECODEID
where COURSERESTRICTION.ID = IsNull(I.COURSERESTRICTIONID,D.COURSERESTRICTIONID)
and MARKINGCOLUMNTERM.MARKINGCOLUMNID = MARKINGCOLUMN.ID)
--Reset CONTEXT_INFO to previous value
if not @CONTEXTCACHE is null
set CONTEXT_INFO @CONTEXTCACHE;
end