TR_ORGANIZATIONDATA_INSERTUPDATE

Definition

Copy


    CREATE trigger TR_ORGANIZATIONDATA_INSERTUPDATE on dbo.ORGANIZATIONDATA for update, insert
    as begin
        set nocount on

        -- 9/11/12 CEV - constituent relation merge, do not change history

        -- Previously had disabled trigger in merge but this can cause a schema lock (WI 231248)

        begin try
            declare @MERGEWELLKNOWNGUID uniqueidentifier = '3DB5F72B-2BA0-45A0-890F-24359E3F42A8';
            if cast(CONTEXT_INFO() as uniqueidentifier) = @MERGEWELLKNOWNGUID
                return;
        end try
        begin catch
        end catch

        if update(PARENTCORPID)
        begin
            declare @CURRENTDATE datetime = getdate()
            declare @CHANGEAGENTID uniqueidentifier
            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

            declare @CONTEXTCACHE varbinary(128)
            set @CONTEXTCACHE = CONTEXT_INFO()

            if @CHANGEAGENTID is not null 
                set CONTEXT_INFO @CHANGEAGENTID

            delete OPH
            from dbo.ORGANIZATIONPARENTHISTORY OPH
                inner join inserted i on OPH.CHILDCORPID = i.ID
                left join deleted d on i.PARENTCORPID = d.PARENTCORPID
            where OPH.STARTDATE = cast(@CURRENTDATE as date)
                and d.PARENTCORPID is null

            if not @CONTEXTCACHE is null 
                set CONTEXT_INFO @CONTEXTCACHE

            update OPH
            set OPH.ENDDATE = DateAdd("d", -1, @CURRENTDATE),
                OPH.DATECHANGED = @CURRENTDATE,
                OPH.CHANGEDBYID = @CHANGEAGENTID
            from dbo.ORGANIZATIONPARENTHISTORY OPH
                inner join deleted d on d.ID = OPH.CHILDCORPID and d.PARENTCORPID = OPH.PARENTCORPID
                left join inserted i on d.PARENTCORPID = i.PARENTCORPID
            where i.PARENTCORPID is null
                and (not d.PARENTCORPID is null)
                and OPH.ENDDATE is null

            insert into dbo.ORGANIZATIONPARENTHISTORY(ID, CHILDCORPID, PARENTCORPID, STARTDATE, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
            (select newid(),
                    i.ID,
                    i.PARENTCORPID,
                    cast(@CURRENTDATE as date),
                    @CURRENTDATE,
                    @CURRENTDATE,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID
             from inserted i
                left join deleted d on i.ID = d.id
             where (d.PARENTCORPID <> i.PARENTCORPID
                    or d.PARENTCORPID is null)
                and (not i.PARENTCORPID is null))
        end
    end