Esempi di modifiche allo script di aggiornamento SQL
L'esempio seguente mostra le modifiche richieste allo script di aggiornamento SQL aci_runtab_upgrd per il supporto di livelli destinatario aggiuntivi.
L'ambiente di progettazione Interact esistente contiene un livello destinatario aggiuntivo chiamato Nucleo familiare. Per supportare questo livello destinatario, il database dell'ambiente di runtime Interact contiene le tabelle denominate HH_CHStaging e HH_RHStaging.
Modifiche obbligatorie allo script di aggiornamento
Individuare il codice nello script di aggiornamento SQL che aggiorna le dimensioni del trattamento e della cronologia delle risposte per il livello destinatario cliente e replicarlo per il livello destinatario Nucleo familiare. Modificare i nomi tabella in queste istruzioni con i nomi appropriati per il livello destinatario Nucleo familiare.
È necessario, inoltre, rivedere l'SQL per il supporto alla modifica del tipo di dati per la colonna SeqNum nella tabella UACI_RHStaging. Il valore di SeqNum è un numero sequenziale in tutte le tabelle di staging della cronologia delle risposte. Il valore successivo utilizzato viene tracciato dalla colonna NextID nella tabella UACI_IdsByType dove TypeID è 2. Ad esempio, si dispone di tre livelli destinatario, cliente, nucleo familiare ed account. Nella tabella di staging della cronologia delle risposte cliente il valore SeqNum più elevato è 50. Nella tabella di staging della cronologia delle risposte nucleo familiare il valore SeqNum più elevato è 75. Nella tabella di staging della cronologia delle risposte account il valore SeqNum più elevato è 100. Quindi, è ecessario modificare l'SQL per impostare NextID per TypeID = 2 in UACI_IdsByType su 101.
Le istruzioni SQL di esempio riportate di seguito mostrano le aggiunte obbligatorie allo script aci_runtab_upgrd_sqlsvr.sql per un database del server SQL contenente il livello destinatario Nucleo familiare. Il testo che è stato modificato per supportare il livello destinatario Nucleo familiare è in grassetto:
ALTER TABLE UACI_CHStaging ADD RTSelectionMethod int NULL
go

ALTER TABLE UACI_RHStaging ADD RTSelectionMethod int NULL
go

ALTER TABLE HH_CHStaging ADD RTSelectionMethod int NULL
go

ALTER TABLE HH_RHStaging ADD RTSelectionMethod int NULL
go


insert into UACI_IdsByType (TypeID, NextID) (select 2,
IDENT_CURRENT('UACI_RHStaging') + IDENT_CURRENT('HH_RHStaging')
+ IDENT_INCR( 'UACI_RHStaging' ))
go

select * into UACI_RHStaging_COPY from UACI_RHStaging
go

select * into HH_RHStaging_COPY from HH_RHStaging
go


DROP TABLE UACI_RHStaging
go

CREATE TABLE UACI_RHStaging (
SeqNum bigint NOT NULL,
TreatmentCode varchar(512) NULL,
CustomerID bigint NULL,
ResponseDate datetime NULL,
ResponseType int NULL,
ResponseTypeCode varchar(64) NULL,
Mark bigint NOT NULL
DEFAULT 0,
UserDefinedFields char(18) NULL,
RTSelectionMethod int NULL,
CONSTRAINT iRHStaging_PK
PRIMARY KEY (SeqNum ASC)
)
go

insert into UACI_RHStaging (SeqNum, TreatmentCode, CustomerID, ResponseDate,
ResponseType, ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod)
(select SeqNum, TreatmentCode, CustomerID, ResponseDate, ResponseType,
ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod from
UACI_RHStaging_COPY)
go

DROP TABLE UACI_RHStaging_COPY
go

DROP TABLE HH_RHStaging
go

CREATE TABLE HH_RHStaging (
SeqNum bigint NOT NULL,
TreatmentCode varchar(512) NULL,
HouseholdID bigint NULL,
ResponseDate datetime NULL,
ResponseType int NULL,
ResponseTypeCode varchar(64) NULL,
Mark bigint NOT NULL
DEFAULT 0,
UserDefinedFields char(18) NULL,
RTSelectionMethod int NULL,
CONSTRAINT iRHStaging_PK
PRIMARY KEY (SeqNum ASC)
)
go

insert into HH_RHStaging (SeqNum, TreatmentCode, HouseHoldID, ResponseDate,
ResponseType, ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod)
(select SeqNum, TreatmentCode, HouseHoldID, ResponseDate, ResponseType,
ResponseTypeCode, Mark, UserDefinedFields, RTSelectionMethod from
HH_RHStaging_COPY)
go

DROP TABLE HH_RHStaging_COPY
go
Per i database DB2® e Oracle, viene utilizzata l'istruzione seguente per l'inserimento di valori nella tabella UACI_IdsByType:
INSERT into UACI_IdsByType (TypeID, NextID)
(select 2, COALESCE(max(a.seqnum)+1,1)
+ COALESCE(max(b.seqnum)+1,1)
from UACI_RHSTAGING a, ACCT_UACI_RHSTAGING b );
In caso di più destinatari, è necessario aggiungere le sezioni allo script SQL aci_usrtab_upgrd per ogni livello destinatario come illustrato nell'esempio di seguito. L'esempio mostra solo le aggiunte modificate.
ALTER TABLE HH_ScoreOverride ADD
OverrideTypeID int NULL,
CellCode varchar(64) NULL,
Zone varchar(64) NULL
go

ALTER TABLE HH_ScoreOverride ADD
Predicate varchar(4000) NULL,
FinalScore float NULL,
EnableStateID int NULL
go

CREATE INDEX iScoreOverride_IX1 ON HH_ScoreOverride
(
HouseHoldID ASC
)
go