TR_ADDRESS_INSERT_SEARCHCONSTITUENT

Definition

Copy


        CREATE trigger TR_ADDRESS_INSERT_SEARCHCONSTITUENT on dbo.ADDRESS after insert not for replication
        as begin
          if isnull(context_info(),0x)<>0xE2DF375A033A104382689B8EAC5165AD
          begin
            -- Delete name-only rows for constituents.

            delete from dbo.SEARCHCONSTITUENT
            where CONSTITUENTID in(select CONSTITUENTID from inserted)
            and ADDRESSID is null;

            insert into dbo.SEARCHCONSTITUENT (ID,CONSTITUENTID,ADDRESSID,
                                               KEYNAME,FIRSTNAME,MIDDLENAME,NAMETYPECODE,
                                               TITLECODEID,SUFFIXCODEID,
                                               COUNTRYID,POSTCODE,STREETNUMBER,STREETNAME,
                                               ISORGANIZATION,ISGROUP,ALIASID)
            select newid(),
                   c.ID,
                   inserted.ID,
                   c.KEYNAME,
                   c.FIRSTNAME,
                   c.MIDDLENAME,
                   c.NAMETYPECODE,
                   c.TITLECODEID,
                   c.SUFFIXCODEID,
                   inserted.COUNTRYID,
                   case when ltrim(rtrim(inserted.POSTCODE)) like '[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]' then left(ltrim(inserted.POSTCODE),5) else ltrim(rtrim(inserted.POSTCODE)) end,
                   isnull(PARSEDADDRESS.STREETNUMBER,''),  
                   isnull(PARSEDADDRESS.STREETNAME,ab.CLEANADDRESSBLOCK),
                   c.ISORGANIZATION,
                   c.ISGROUP,
                   c.ALIASID
            from inserted
            inner join dbo.V_CONSTITUENTALLNAMES c on c.ID = inserted.CONSTITUENTID
            cross apply (select ltrim(rtrim(upper(replace(replace(replace(replace(replace(replace(replace(replace(
                                 inserted.ADDRESSBLOCK,'.',''),'-',' '),',',' '),
                                 char(13)+char(10),' '),char(10)+char(13),' '),char(13),' '),char(10),' '),'  ',' ')))) CLEANADDRESSBLOCK) ab
            outer apply (select left(CLEANADDRESSBLOCK,charindex(' ',CLEANADDRESSBLOCK)-1) STREETNUMBER,
                                right(CLEANADDRESSBLOCK,len(CLEANADDRESSBLOCK)-charindex(' ',CLEANADDRESSBLOCK)) STREETNAME
                         where dbo.UFN_REGULAREXPRESSIONMATCH('(?:^[A-Z]?[\d-]+[A-Z]? (?:.|\n)+$)',CLEANADDRESSBLOCK) = 1
                         and charindex(' ',CLEANADDRESSBLOCK)<=13) PARSEDADDRESS
            where c.KEYNAME<>''
          end
        end