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