SQL 업그레이드 스크립트의 수정 예제
다음 예제에서는 추가 대상 수준을 지원하기 위해 aci_runtab_upgrd SQL 업그레이드 스크립트에 필요한 수정을 표시합니다.
기존 Interact 디자인 환경에 가정이라는 추가 대상 수준이 포함되어 있습니다. 이 대상 수준을 지원하기 위해 Interact 런타임 환경 데이터베이스에 HH_CHStagingHH_RHStaging 테이블이 포함되어 있습니다.
업그레이드 스크립트의 필수 변경 내용
SQL 업그레이드 스크립트에서 고객 대상 수준의 처리 크기와 응답 기록을 업데이트하는 코드를 찾아 가정 대상 수준에 사용할 수 있도록 복제하십시오. 해당 명령문의 테이블 이름을 가정 대상 수준에 적합한 이름으로 변경하십시오.
UACI_RHStaging 테이블의 SeqNum 열에 대해서도 데이터 유형 변경을 지원하도록 SQL을 개정해야 합니다. SeqNum의 값은 모든 응답 기록 스테이징 테이블에서 순차 번호입니다. 사용되는 그 다음 값은 UACI_IdsByType 테이블의 NextID 열에서 추적되며 여기서 TypeID2입니다. 예를 들어, 고객, 가정 및 계정이라는 세 개의 대상 수준이 있습니다. 고객 응답 기록 스테이징 테이블에서 가장 높은 SeqNum50입니다. 가정 응답 기록 스테이징 테이블에서 가장 높은 SeqNum75입니다. 계정 응답 기록 스테이징 테이블에서 가장 높은 SeqNum100입니다. 따라서 UACI_IdsByType에서 TypeID = 2NextID101로 변경해야 합니다.
다음 SQL문 예제는 가정 대상 수준이 포함된 SQL Server 데이터베이스의 aci_runtab_upgrd_sqlsvr.sql 스크립트에 필요한 추가 항목을 보여줍니다. 가정 대상 수준을 지원하도록 변경된 텍스트는 굵은체로 표시되어 있습니다.

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
DB2® 및 Oracle 데이터베이스의 경우 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 );
여러 대상 수준이 있는 경우 다음 예제에 표시된 것처럼 각 대상 수준마다 aci_usrtab_upgrd SQL 스크립트에 섹션을 추가해야 합니다. 예제에는 수정된 추가 항목만 표시되어 있습니다.
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