Copy Code Trigger Definition

                
                    CREATE trigger TR_RELATIONSHIP_UPDATE ON dbo.RELATIONSHIP after update not for replication
                    as begin
          
                        set nocount on;
                        
            if dbo.UFN_B2T_CONTEXTISSYNC() = 0
            begin
            
                          /*Update reciprocal record's type information if relationship dates have changed*/
                          if update(STARTDATE) or update(ENDDATE) begin        
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.STARTDATE = INSERTED.STARTDATE,
                                  RELATIONSHIP.ENDDATE = INSERTED.ENDDATE,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID        
                          end
                        
                          /*Update comments field if it has changed*/
                          if update(COMMENTS) begin    
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.COMMENTS = INSERTED.COMMENTS,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID
                          end
                        
                          /*Update reciprocal record's contact information if relationship type has changed*/
                          if update(ISCONTACT) or update(CONTACTTYPECODEID) or update(POSITION) begin
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.ISCONTACT = INSERTED.ISCONTACT,
                                  RELATIONSHIP.CONTACTTYPECODEID = INSERTED.CONTACTTYPECODEID,
                                  RELATIONSHIP.POSITION = INSERTED.POSITION,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID        
                          end

                        
                        
                          /*Update primary business records if IsPrimaryBusiness field has changed*/
                          if update(ISPRIMARYBUSINESS) begin
                              if (select count(ID) from inserted where ISPRIMARYBUSINESS = 1) > 0 begin
                                  /*Remove any references to any other business 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
                                      )
                              end 
                            
                              /*Update reciprocal record's primary business information*/
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.ISPRIMARYBUSINESS = INSERTED.ISPRIMARYBUSINESS,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID and         
                                  RELATIONSHIP.ISPRIMARYBUSINESS = DELETED.ISPRIMARYBUSINESS

                          end
                        
                        
                          /*Update primary contact records if IsPrimaryContact field has changed*/
                          if update(ISPRIMARYCONTACT) begin
                              if (select count(ID) from inserted where ISPRIMARYCONTACT = 1) > 0 begin
                                  /*Remove any references to any other individual 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
                                      )
                              end 
                            
                              /*Update reciprocal record's primary contact information*/
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.ISPRIMARYCONTACT = INSERTED.ISPRIMARYCONTACT,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID and         
                                  RELATIONSHIP.ISPRIMARYCONTACT = DELETED.ISPRIMARYCONTACT

                          end
                        
                          /*Update reciprocal record's type information if relationship type has changed*/
                          if update(RELATIONSHIPTYPECODEID) or update(RECIPROCALTYPECODEID) or update(ISMATCHINGGIFTRELATIONSHIP) begin        
                              update
                                  dbo.RELATIONSHIP
                              set 
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID,
                                  RELATIONSHIP.RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID,
                                  RELATIONSHIP.ISMATCHINGGIFTRELATIONSHIP = INSERTED.ISMATCHINGGIFTRELATIONSHIP,
                                  RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                  RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                              from
                                  INSERTED
                              inner join
                                  DELETED
                              on
                                  DELETED.ID = INSERTED.ID
                              where                
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID and
                                  RELATIONSHIP.ISMATCHINGGIFTRELATIONSHIP = DELETED.ISMATCHINGGIFTRELATIONSHIP
                          end
                        
                          /*Update ISCONSTITUENT based on Student Relationship Constituency Criteria*/
                          if update(RELATIONSHIPTYPECODEID)
                              begin                            
                                  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
                              end
                            
                          if update(RECIPROCALTYPECODEID)
                              begin
                                  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
                        
                          /*Update spouse records if IsSpouse field has changed*/
                          if update(ISSPOUSE) begin
                              if (select count(ID) from inserted where ISSPOUSE = 1) > 0 begin
                                  /*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
                                      )

                                  /*Set the IsSpouse flag on the reciprocal relationship to true*/
                                  update
                                      dbo.RELATIONSHIP
                                  set
                                      RELATIONSHIP.ISSPOUSE = 1,
                                      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.RECIPROCALCONSTITUENTID 
                                          where                                        
                                              RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and
                                              RELATIONSHIP.RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID and
                                              RELATIONSHIP.RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID and
                                              RELATIONSHIP.ID <> INSERTED.ID                
                                      )
                                    
                                  /* 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
                              end 
                            
                              if (select count(ID) from inserted where ISSPOUSE = 0) > 0 begin                
                                  /*Set the IsSpouse flag on the reciprocal relationship to false*/
                                  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.RECIPROCALCONSTITUENTID 
                                          where                                        
                                              RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and
                                              RELATIONSHIP.RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID and
                                              RELATIONSHIP.RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID and
                                              RELATIONSHIP.ID <> INSERTED.ID and
                                              RELATIONSHIP.ISSPOUSE = 1
                                      )                    
                              end
                          end
            
              if update(RELATIONSHIPCONSTITUENTID) or update(RECIPROCALCONSTITUENTID) begin
                update dbo.RELATIONSHIP
                set RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID,
                    RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID,
                    RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED,
                                    RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID
                from INSERTED
                inner join DELETED on DELETED.ID = INSERTED.ID
                where
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID        
              end
            end
            else
            begin
              -- TAIntegration data sync

              -- Just update the reciprocal relationship with all values from the current record in a single update.

              -- We don't want this trigger updating other records.  The sync will maintain those records appropriately.

              -- Breaking up the updates of individual fields into separate updates caused some improper constraint violations (see bug 213107).

              
              update dbo.RELATIONSHIP
              set RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID,
                      RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID,
                      RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID,
                      RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID,
                      ISSPOUSE = INSERTED.ISSPOUSE,
                      ISPRIMARYBUSINESS = INSERTED.ISPRIMARYBUSINESS,
                      ISCONTACT = INSERTED.ISCONTACT,
                      ISPRIMARYCONTACT = INSERTED.ISPRIMARYCONTACT,
                      CONTACTTYPECODEID = INSERTED.CONTACTTYPECODEID,
                      POSITION = INSERTED.POSITION,
                      STARTDATE = INSERTED.STARTDATE,
                      ENDDATE = INSERTED.ENDDATE,
                      ISMATCHINGGIFTRELATIONSHIP = INSERTED.ISMATCHINGGIFTRELATIONSHIP,
                      RELATIONSHIPSETID = INSERTED.RELATIONSHIPSETID,
                      COMMENTS = INSERTED.COMMENTS,
                      CHANGEDBYID = INSERTED.CHANGEDBYID,
                      DATECHANGED = INSERTED.DATECHANGED
              from INSERTED
              inner join DELETED on DELETED.ID = INSERTED.ID
              where
                                  RELATIONSHIP.RELATIONSHIPCONSTITUENTID = DELETED.RECIPROCALCONSTITUENTID and
                                  RELATIONSHIP.RECIPROCALCONSTITUENTID = DELETED.RELATIONSHIPCONSTITUENTID and
                                  RELATIONSHIP.RELATIONSHIPTYPECODEID = DELETED.RECIPROCALTYPECODEID and
                                  RELATIONSHIP.RECIPROCALTYPECODEID = DELETED.RELATIONSHIPTYPECODEID        
            end            
                    end