TR_CONSTITUENT_UPDATE_HOUSEHOLD
Definition
Copy
CREATE trigger TR_CONSTITUENT_UPDATE_HOUSEHOLD on dbo.CONSTITUENT after update not for replication
as begin
if update(KEYNAME) or update(KEYNAMEPREFIX) or update(FIRSTNAME) or update(MIDDLENAME) or update(MAIDENNAME) or update(NICKNAME) or update(TITLECODEID) or update(TITLE2CODEID) or update(SUFFIXCODEID) or update(SUFFIX2CODEID)
begin
if exists (select 1 from sys.TABLES where TYPE = 'U' and NAME = 'GROUPMEMBER')
and exists (select 1 from sys.TABLES where TYPE = 'U' and NAME = 'GROUPDATA')
begin
declare @CURRENTDATE datetime;
set @CURRENTDATE = GetDate();
declare @CHANGEAGENTID uniqueidentifier;
-- For audit reasons:
-- Use the same ChangeAgentId used to update the constituent row if it was updated.
-- Since this trigger may be hit by a bulk update, we can not assume that all ChangeByIds are the same for all records unless they aren't being specified.
if update(CHANGEDBYID)
set @CHANGEAGENTID = null;
else
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
update dbo.CONSTITUENT
set
CONSTITUENT.KEYNAME = left(dbo.UFN_NAMEFORMAT_FROMID(GROUPDATA.NAMEFORMATFUNCTIONID, PM.MEMBERID), 100),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = COALESCE(@CHANGEAGENTID, inserted.CHANGEDBYID)
from inserted
inner join dbo.GROUPMEMBER GM on inserted.ID = GM.MEMBERID
inner join dbo.GROUPDATA on GM.GROUPID = GROUPDATA.ID
inner join dbo.GROUPMEMBER PM on GM.GROUPID = PM.GROUPID and PM.ISPRIMARY <>0
where inserted.ISORGANIZATION = 0
and inserted.ISGROUP = 0
and dbo.CONSTITUENT.ID = GM.GROUPID
and GROUPDATA.NAMEFORMATFUNCTIONID is not null
end
end
end