TR_TEAMFUNDRAISINGTEAM_UPDATE_FAFGROUPDIRECTHIERARCHY
Definition
Copy
create trigger TR_TEAMFUNDRAISINGTEAM_UPDATE_FAFGROUPDIRECTHIERARCHY on dbo.TEAMFUNDRAISINGTEAM after update not for replication
as
if update(PARENTTEAMID)
begin
declare @CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
set @CURRENTDATE = GETDATE()
;With CTE_PARENT(TEAMID, PARENTTEAMID)
as
(
select D.ID, D.PARENTTEAMID
from deleted D
join dbo.TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = D.ID
union all
select C.TEAMID, TFT.PARENTTEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
join CTE_PARENT C ON TFT.ID = C.PARENTTEAMID
)
,CTE_CHILDREN(TEAMID, PARENTTEAMID)
as
(
select D.ID, D.PARENTTEAMID
from deleted D
join dbo.TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = D.ID
union all
select TFT.ID, C.PARENTTEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
join CTE_CHILDREN C ON TFT.PARENTTEAMID = C.TEAMID
),
CTE_ALL(TEAMID, PARENTTEAMID)
AS
(
select TEAMID, PARENTTEAMID from CTE_PARENT
union all
select TEAMID, PARENTTEAMID from CTE_CHILDREN
)
delete from dbo.FAFGROUPDIRECTHIERARCHY
from dbo.FAFGROUPDIRECTHIERARCHY FF
join CTE_ALL C on FF.GROUPID = C.PARENTTEAMID and FF.CHILDGROUPID = C.TEAMID
;With CTE_PARENT(TEAMID, PARENTTEAMID)
as
(
select I.ID, I.PARENTTEAMID
from inserted I
join dbo.TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = I.ID
union all
select C.TEAMID, TFT.PARENTTEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
join CTE_PARENT C ON TFT.ID = C.PARENTTEAMID
)
,CTE_CHILDREN(TEAMID, PARENTTEAMID)
as
(
select I.ID, I.PARENTTEAMID
from inserted I
join dbo.TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = I.ID
union all
select TFT.ID, C.PARENTTEAMID
from dbo.TEAMFUNDRAISINGTEAM TFT
join CTE_CHILDREN C ON TFT.PARENTTEAMID = C.TEAMID
),
CTE_ALL(TEAMID, PARENTTEAMID)
AS
(
select TEAMID, PARENTTEAMID from CTE_PARENT
union all
select TEAMID, PARENTTEAMID from CTE_CHILDREN
)
insert into dbo.FAFGROUPDIRECTHIERARCHY(ID, EVENTID, GROUPID, GROUPCONSTITUENTID, CHILDGROUPID, CHILDGROUPCONSTITUENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select newID(), A.*,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE from (
select distinct cTX.EVENTID, C.PARENTTEAMID as GROUPID , pTX.TEAMCONSTITUENTID as GROUPCONSTITUENTID, C.TEAMID as CHILDGROUPID, cTX.TEAMCONSTITUENTID as CHILDGROUPCONSTITUENTID
from CTE_ALL c
left join dbo.TEAMEXTENSION cTX (nolock) on cTX.TEAMFUNDRAISINGTEAMID = C.TEAMID
left join dbo.TEAMEXTENSION pTX (nolock) on pTX.TEAMFUNDRAISINGTEAMID = C.PARENTTEAMID
where C.PARENTTEAMID is not null
) A
end