TR_MARKINGCOLUMNTERM_INSERTUPDATEDELETE_DELETECOURSEGRADINGMARKINGCOLUMN
Definition
Copy
--similar trigger is on COURSERESTRICTION, COURSERESTRICTIONSTARTTERM tables
CREATE trigger TR_MARKINGCOLUMNTERM_INSERTUPDATEDELETE_DELETECOURSEGRADINGMARKINGCOLUMN
on dbo.MARKINGCOLUMNTERM
after insert, update, 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.MARKINGCOLUMN
on COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMN.ID
left outer join deleted D
on MARKINGCOLUMN.ID = D.MARKINGCOLUMNID
left outer join inserted I
on MARKINGCOLUMN.ID = I.MARKINGCOLUMNID
where (D.MARKINGCOLUMNID is not null or I.MARKINGCOLUMNID is not null) 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