TR_ADDRESS_TASYNC_D
Definition
Copy
CREATE trigger TR_ADDRESS_TASYNC_D on dbo.ADDRESS after delete not for replication
as begin
if dbo.UFN_B2T_CONTEXTISSYNC() = 1
delete from dbo.TA_ADDRESS
where ID in(select ID from DELETED)
else
begin
merge dbo.TA_ADDRESS t
using (select ID from DELETED) d
on (d.ID = t.ID)
when matched and t.ACTIONCODE = 1 then
delete
when matched then
update set ACTIONCODE = 3;
--
-- reset the primary.
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_ADDRESS t, DELETED i
where t.ID = dbo.UFN_B2T_GETACCOUNTPREFERREDADDRESS(i.CONSTITUENTID,0)
and i.ISPRIMARY = 1
--
-- When deleting a master row (t2), flag the linked non-master (t) rows for insert
-- into TA.
--
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_ADDRESS t
inner join dbo.TA_ADDRESS t2 on t.MASTERSYNCID = t2.SYNCID
inner join DELETED d on d.ID = t2.ID
--
-- flag the constituent record that the address is on or
-- flag the members in the household for update when a primary record is deleted
-- and the constituent does not have an address
--
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t
inner join DELETED i on i.CONSTITUENTID = t.ID
where i.ISPRIMARY = 1
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from DELETED i
cross apply dbo.UFN_B2T_GET_HOUSEHOLDANDMEMBERS(i.CONSTITUENTID, 1) m
inner join dbo.TA_CONSTITUENT t on t.ID = m.MEMBERID
where i.ISPRIMARY = 1
and NOT exists (select 'x' from dbo.ADDRESS a where t.ID = a.CONSTITUENTID)
--
--flag the contact(s) for an org constituent if that contact does not have an address
--
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from DELETED i
inner join dbo.RELATIONSHIP r on i.CONSTITUENTID = r.RELATIONSHIPCONSTITUENTID
inner join dbo.TA_CONSTITUENT t on t.ID = r.RECIPROCALCONSTITUENTID
where dbo.UFN_CONSTITUENT_ISORGANIZATION (i.CONSTITUENTID) = 1
and i.ISPRIMARY = 1
and NOT exists (select 'x' from dbo.ADDRESS a where t.ID = a.CONSTITUENTID)
--
-- flag members when household master records are deleted and the member
-- record is primary.
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t, dbo.TA_ADDRESS d, dbo.TA_ADDRESS m, dbo.ADDRESS a, DELETED i
where t.ID in (select MEMBERID from dbo.UFN_B2T_GET_HOUSEHOLDANDMEMBERS(i.CONSTITUENTID, 1))
and i.ID = d.ID
and d.SYNCID = m.MASTERSYNCID
and m.ID = a.ID
and t.ID = a.CONSTITUENTID
and a.ISPRIMARY = 1
--
-- do the same for org contacts
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t, dbo.TA_ADDRESS d, dbo.TA_ADDRESS m, dbo.ADDRESS a, DELETED i
where dbo.UFN_CONSTITUENT_ISORGANIZATION (i.CONSTITUENTID) = 1
and t.ID in (select r.RECIPROCALCONSTITUENTID from dbo.RELATIONSHIP r where r.RELATIONSHIPCONSTITUENTID = i.CONSTITUENTID)
and i.ID = d.ID
and d.SYNCID = m.MASTERSYNCID
and m.ID = a.ID
and t.ID = a.CONSTITUENTID
and a.ISPRIMARY = 1
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_NAMES0 t
inner join DELETED i on i.CONSTITUENTID = t.ID and i.ISPRIMARY = 1
-- Refresh accounts.address_sts
update dbo.TA_ACCOUNTS
set ACTIONCODE = case when ACTIONCODE=1 then 1 else 2 end
where ID in(select CONSTITUENTID from DELETED);
end
end