Copy Code Trigger Definition

                 
                    CREATE trigger TR_RELATIONSHIP_INSERT on dbo.RELATIONSHIP after insert not for replication
                    as begin
                        
                        set nocount on;    
                        
                        /*Remove any references to the current record as a spouse*/
                        update
                            dbo.RELATIONSHIP
                        set
                            RELATIONSHIP.ISSPOUSE = 0,
                            RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                            RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                        from
                            INSERTED
                        where RELATIONSHIP.ID in(
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                        where
                                            RELATIONSHIP.ID <> INSERTED.ID and
                                            INSERTED.ISSPOUSE = 1 and
                                            RELATIONSHIP.ISSPOUSE = 1
                                    union all
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                        where
                                            RELATIONSHIP.ID <> INSERTED.ID and
                                            INSERTED.ISSPOUSE = 1 and
                                            RELATIONSHIP.ISSPOUSE = 1
                                    union all
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                        where
                                            RELATIONSHIP.ID <> INSERTED.ID and
                                            INSERTED.ISSPOUSE = 1 and
                                            RELATIONSHIP.ISSPOUSE = 1
                                    union all
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                        where
                                            RELATIONSHIP.ID <> INSERTED.ID and
                                            INSERTED.ISSPOUSE = 1 and
                                            RELATIONSHIP.ISSPOUSE = 1
                                    );
                                    
                        /* If constituent spouses are supposed to be marked as spouses make sure the new spouse is marked as a constituent */
                        if (dbo.UFN_CONSTITUENCYCRITERIASPOUSE_SPOUSEISCONSTITUENT() = 1)
                        begin
                            update dbo.CONSTITUENT
                                set CONSTITUENT.ISCONSTITUENT = 1,
                                    CONSTITUENT.DATECHANGED = INSERTED.DATECHANGED,
                                    CONSTITUENT.CHANGEDBYID = INSERTED.CHANGEDBYID
                                from dbo.CONSTITUENT
                                    inner join INSERTED
                                        on INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
                                    inner join dbo.CONSTITUENT as RELATIONSHIPCONSTITUENT
                                        on INSERTED.RELATIONSHIPCONSTITUENTID = RELATIONSHIPCONSTITUENT.ID
                                where (INSERTED.ISSPOUSE = 1) and
                                        (CONSTITUENT.ISCONSTITUENT = 0) and 
                                        (RELATIONSHIPCONSTITUENT.ISCONSTITUENT = 1);
                        end

                        /*Remove any references to the current record as a primary business*/
                        update
                            dbo.RELATIONSHIP
                        set
                            RELATIONSHIP.ISPRIMARYBUSINESS = 0,
                            RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                            RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                        from
                            INSERTED
                        inner join
                            dbo.CONSTITUENT
                        on
                            INSERTED.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID
                        where
                            CONSTITUENT.ISORGANIZATION = 0 and 
                            RELATIONSHIP.ID in(
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                        where
                                            RELATIONSHIP.ID <> INSERTED.ID and
                                            INSERTED.ISPRIMARYBUSINESS = 1 and
                                            RELATIONSHIP.ISPRIMARYBUSINESS = 1
                                    union all
                                        select
                                            RELATIONSHIP.ID
                                        from
                                            dbo.RELATIONSHIP 
                                        inner join
                                            INSERTED
                                        on
                                            RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                        where
                                            RELATIONSHIP.RELATIONSHIPCONSTITUENTID <> INSERTED.RECIPROCALCONSTITUENTID and
                                            INSERTED.ISPRIMARYBUSINESS = 1 and
                                            RELATIONSHIP.ISPRIMARYBUSINESS = 1
                                    )

                        update
                            dbo.RELATIONSHIP
                        set
                            RELATIONSHIP.ISPRIMARYBUSINESS = 0,
                            RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                            RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                        from
                            INSERTED
                        inner join
                            dbo.CONSTITUENT
                        on
                            INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
                        where
                            CONSTITUENT.ISORGANIZATION = 0 and 
                            RELATIONSHIP.ID in
                            (
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                    
                                where
                                    INSERTED.ISPRIMARYBUSINESS = 1 and
                                    RELATIONSHIP.ISPRIMARYBUSINESS = 1 and
                                    RELATIONSHIP.RECIPROCALCONSTITUENTID <> INSERTED.RELATIONSHIPCONSTITUENTID
                            union all
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                where
                                    RELATIONSHIP.ID <> INSERTED.ID and
                                    INSERTED.ISPRIMARYBUSINESS = 1 and
                                    RELATIONSHIP.ISPRIMARYBUSINESS = 1
                            )

                        /*Remove any references to the current record as a primary contact*/
                        update
                            dbo.RELATIONSHIP
                        set
                            RELATIONSHIP.ISPRIMARYCONTACT = 0,
                            RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                            RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                        from
                            INSERTED
                        inner join
                            dbo.CONSTITUENT
                        on
                            INSERTED.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID
                        where
                            CONSTITUENT.ISORGANIZATION = 1 and
                            RELATIONSHIP.ID in(
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                where
                                    RELATIONSHIP.ID <> INSERTED.ID and
                                    INSERTED.ISPRIMARYCONTACT = 1 and
                                    RELATIONSHIP.ISPRIMARYCONTACT = 1
                            union all
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID 
                                where
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID <> INSERTED.RECIPROCALCONSTITUENTID and
                                    INSERTED.ISPRIMARYCONTACT = 1 and
                                    RELATIONSHIP.ISPRIMARYCONTACT = 1
                            )
                        
                        update
                            dbo.RELATIONSHIP
                        set
                            RELATIONSHIP.ISPRIMARYCONTACT = 0,
                            RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                            RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                        from
                            INSERTED
                        inner join
                            dbo.CONSTITUENT
                        on
                            INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
                        where
                            CONSTITUENT.ISORGANIZATION = 1 and 
                            RELATIONSHIP.ID in
                            (
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                    
                                where
                                    INSERTED.ISPRIMARYCONTACT = 1 and
                                    RELATIONSHIP.ISPRIMARYCONTACT = 1 and
                                    RELATIONSHIP.RECIPROCALCONSTITUENTID <> INSERTED.RELATIONSHIPCONSTITUENTID
                            union all
                                select
                                    RELATIONSHIP.ID
                                from
                                    dbo.RELATIONSHIP 
                                inner join
                                    INSERTED
                                on
                                    RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID 
                                where
                                    RELATIONSHIP.ID <> INSERTED.ID and
                                    INSERTED.ISPRIMARYCONTACT = 1 and
                                    RELATIONSHIP.ISPRIMARYCONTACT = 1
                            )

                        /*Create the reciprocal relationship record*/
                        insert into dbo.RELATIONSHIP
                        (
                            RELATIONSHIPCONSTITUENTID,
                            RECIPROCALCONSTITUENTID,
                            RELATIONSHIPTYPECODEID,
                            RECIPROCALTYPECODEID,
                            ISSPOUSE,
                            ISPRIMARYBUSINESS,
                            ISCONTACT,
                            ISPRIMARYCONTACT,
                            CONTACTTYPECODEID,
                            POSITION,
                            STARTDATE,
                            ENDDATE,
                            ISMATCHINGGIFTRELATIONSHIP,
                            RELATIONSHIPSETID,
                            COMMENTS,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        select 
                            RECIPROCALCONSTITUENTID,
                            RELATIONSHIPCONSTITUENTID,
                            RECIPROCALTYPECODEID,
                            RELATIONSHIPTYPECODEID,
                            ISSPOUSE,
                            ISPRIMARYBUSINESS,
                            ISCONTACT,
                            ISPRIMARYCONTACT,
                            CONTACTTYPECODEID,
                            POSITION,
                            STARTDATE,
                            ENDDATE,
                            ISMATCHINGGIFTRELATIONSHIP,
                            RELATIONSHIPSETID,
                            COMMENTS,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        from    
                            INSERTED
                            
                        /*Update ISCONSTITUENT on the RELATIONSHIPCONSTITUENTID record based on Student Relationship Constituency Criteria*/
                            update dbo.CONSTITUENT
                            set ISCONSTITUENT = 1,
                                CHANGEDBYID = INSERTED.CHANGEDBYID,
                                DATECHANGED = GetDate()
                            from                                     
                                dbo.UFN_CONSTITUENT_STUDENTRELATIONCONSTITUENCIES() as RELATIONCONSTITUENCIES
                            inner join 
                                INSERTED on 
                                    RELATIONCONSTITUENCIES.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID and
                                    RELATIONCONSTITUENCIES.CONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and
                                    RELATIONCONSTITUENCIES.RECIPROCALTYPECODEID = INSERTED.RECIPROCALTYPECODEID and
                                    RELATIONCONSTITUENCIES.RELATIONSHIPTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID
                            where
                                RELATIONCONSTITUENCIES.CONSTITUENTID = CONSTITUENT.ID
                                and CONSTITUENT.ISCONSTITUENT = 0
                            
                        /*Update ISCONSTITUENT on the RECIPROCALCONSTITUENTID record based on Student Relationship Constituency Criteria*/                            
                            update dbo.CONSTITUENT
                            set ISCONSTITUENT = 1,
                                CHANGEDBYID = INSERTED.CHANGEDBYID,
                                DATECHANGED = GetDate()
                            from                                     
                                dbo.UFN_CONSTITUENT_STUDENTRELATIONCONSTITUENCIES() as RELATIONCONSTITUENCIES
                            inner join 
                                INSERTED on 
                                    RELATIONCONSTITUENCIES.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and
                                    RELATIONCONSTITUENCIES.CONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID and                                      
                                    RELATIONCONSTITUENCIES.RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID and
                                    RELATIONCONSTITUENCIES.RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID
                            where
                                RELATIONCONSTITUENCIES.CONSTITUENTID = CONSTITUENT.ID
                                and CONSTITUENT.ISCONSTITUENT = 0
                    end