TR_PATTERNBLOCKMEETING_INSERTUPDATE_STARTENDTIMEUPDATE
Definition
Copy
CREATE trigger [dbo].[TR_PATTERNBLOCKMEETING_INSERTUPDATE_STARTENDTIMEUPDATE]
on [dbo].[PATTERNBLOCKMEETING]
for update, insert
as begin
set nocount on
if update(TIMETABLEDAYPERIODID)
begin
declare @CURRENTDATE datetime
set @CURRENTDATE = GetDate()
begin try
update PATTERNBLOCKMEETING
set STARTTIME = TDP.STARTTIME,
ENDTIME =
(select ENDTIME from
(
select ENDTIME, ROW_NUMBER() OVER (ORDER BY TIMETABLEDAYPERIOD.STARTTIME) as 'ROW_NUMBER'
from
TIMETABLEDAYPERIOD
where
TIMETABLEDAYPERIOD.TIMETABLEDAYID = PATTERNBLOCKMEETING.TIMETABLEDAYID
and TIMETABLEDAYPERIOD.STARTTIME >= TDP.STARTTIME
) as endrow
where
endrow.ROW_NUMBER = inserted.LENGTHINPERIODS),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = inserted.CHANGEDBYID
from
PATTERNBLOCKMEETING
inner join
inserted on inserted.ID = PATTERNBLOCKMEETING.ID
inner join
TIMETABLEDAYPERIOD TDP on TDP.ID = PATTERNBLOCKMEETING.TIMETABLEDAYPERIODID
end try
begin catch
exec dbo.USP_RAISE_ERROR
end catch
end
if (exists (select PATTERNBLOCKMEETING.ID
from
PATTERNBLOCKMEETING
inner join
inserted on inserted.ID = PATTERNBLOCKMEETING.ID
where
PATTERNBLOCKMEETING.STARTTIME IS NULL OR PATTERNBLOCKMEETING.ENDTIME IS NULL))
raiserror('BBERR_PATTERNBLOCKMEETING_TIME_CANNOTBENULL', 13, 1)
if (exists (select PATTERNBLOCKMEETING.ID
from
PATTERNBLOCKMEETING
inner join
inserted on inserted.ID = PATTERNBLOCKMEETING.ID
where
PATTERNBLOCKMEETING.STARTTIME >= PATTERNBLOCKMEETING.ENDTIME))
raiserror('BBERR_PATTERNBLOCKMEETING_ENDTIMEBEFORESTARTTIME', 13, 1)
if (exists (select A.ID
from
PATTERNBLOCKMEETING A
inner join
PATTERNBLOCKMEETING B on A.PATTERNBLOCKID = B.PATTERNBLOCKID
where
A.ID <> B.ID and A.TIMETABLEDAYID = B.TIMETABLEDAYID and
((A.STARTTIME > B.STARTTIME and A.STARTTIME < B.ENDTIME)
or (A.ENDTIME > B.STARTTIME and A.ENDTIME < B.ENDTIME))))
raiserror('BBERR_PATTERNBLOCKMEETING_TIMES_OVERLAP', 13, 1)
if (exists (select A.ID
from
PATTERNBLOCKMEETING A
inner join
PATTERNBLOCKMEETING B on A.PATTERNBLOCKID = B.PATTERNBLOCKID
where
A.ID <> B.ID and A.TIMETABLEDAYID = B.TIMETABLEDAYID and
A.STARTTIME = B.STARTTIME and A.ENDTIME = B.ENDTIME))
raiserror('BBERR_PATTERNBLOCKMEETING_UNIQUE', 13, 1)
end