USP_GLOBALCHANGE_BUILDCONSTITUENTETI
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_BUILDCONSTITUENTETI
(
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output
)
as
set nocount off;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
-- Delete all records from the ETI tables
truncate table dbo.NAMEETI;
truncate table dbo.ADDRESSETI;
truncate table dbo.PHONEETI;
truncate table dbo.EMAILADDRESSETI;
-- Disable all the non-clustered indexes
alter index [IX_NAMEETI_CONSTITUENTID] ON [dbo].[NAMEETI] disable;
alter index [IX_ADDRESSETI_CONSTITUENTID] ON [dbo].[ADDRESSETI] disable;
alter index [IX_ADDRESSETI_ADDRESSID] ON [dbo].[ADDRESSETI] disable;
alter index [IX_PHONEETI_CONSTITUENTID] ON [dbo].PHONEETI disable;
alter index [IX_PHONEETI_PHONEID] ON [dbo].PHONEETI disable;
alter index [IX_EMAILADDRESSETI_CONSTITUENTID] ON [dbo].EMAILADDRESSETI disable;
alter index [IX_EMAILADDRESSETI_EMAILADDRESSID] ON [dbo].EMAILADDRESSETI disable;
declare @COUNT int;
set @COUNT = 0;
--NAMEETI
with NAMES_CTE as
(
select
c.ID,
c.NAME + ' ' + coalesce(s.DESCRIPTION, '') NAME
from dbo.CONSTITUENT c
left outer join dbo.SUFFIXCODE s
on c.SUFFIXCODEID = s.ID
)
insert into dbo.NAMEETI(CONSTITUENTID, TOKEN)
select ID, TOKEN
from NAMES_CTE
cross apply dbo.UFN_PARTITIONSTRING_PARTITIONINTOWORDS(NAME)
set @COUNT = @COUNT + @@ROWCOUNT;
-- ADDRESS ETI
with ADDRESS_CTE as
(
select
a.ID,
a.CONSTITUENTID,
coalesce(a.ADDRESSBLOCK, '') + ' ' + coalesce(a.CITY, '') +' ' + coalesce(s.ABBREVIATION, '') + ' ' + coalesce(a.POSTCODE,'') ADDRESS
from dbo.ADDRESS a
left outer join dbo.STATE s
on a.STATEID = s.ID
)
insert into dbo.ADDRESSETI(ADDRESSID, CONSTITUENTID, TOKEN)
select ID, CONSTITUENTID, TOKEN
from ADDRESS_CTE
cross apply UFN_PARTITIONSTRING_PARTITIONINTOWORDS(ADDRESS)
set @COUNT = @COUNT + @@ROWCOUNT;
--PHONETI
with PHONE_CTE as
(
select
ID,
CONSTITUENTID,
NUMBER
from dbo.PHONE
)
insert into dbo.PHONEETI(PHONEID, CONSTITUENTID, TOKEN)
select ID, CONSTITUENTID, TOKEN
from PHONE_CTE
cross apply UFN_PARTITIONSTRING_PARTITIONINTOWORDS(NUMBER)
set @COUNT = @COUNT + @@ROWCOUNT;
--EMAILETI
with EMAIL_CTE as
(
select
ID,
CONSTITUENTID,
EMAILADDRESS
from dbo.EMAILADDRESS
)
insert into dbo.EMAILADDRESSETI(EMAILADDRESSID, CONSTITUENTID, TOKEN)
select ID, CONSTITUENTID, TOKEN
from EMAIL_CTE
cross apply UFN_PARTITIONSTRING_PARTITIONINTOWORDS(EMAILADDRESS)
set @COUNT = @COUNT + @@ROWCOUNT;
set @NUMBERADDED = @COUNT;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
-- Rebuild the non-clustered indexes after the ETI tables have been populated
alter index [IX_EMAILADDRESSETI_CONSTITUENTID] ON [dbo].EMAILADDRESSETI rebuild;
alter index [IX_EMAILADDRESSETI_EMAILADDRESSID] ON [dbo].EMAILADDRESSETI rebuild;
alter index [IX_NAMEETI_CONSTITUENTID] ON [dbo].[NAMEETI] rebuild;
alter index [IX_ADDRESSETI_CONSTITUENTID] ON [dbo].[ADDRESSETI] rebuild;
alter index [IX_ADDRESSETI_ADDRESSID] ON [dbo].[ADDRESSETI] rebuild;
alter index [IX_PHONEETI_CONSTITUENTID] ON [dbo].PHONEETI rebuild;
alter index [IX_PHONEETI_PHONEID] ON [dbo].PHONEETI rebuild;