SQL 업그레이드 스크립트 검토 및 수정
Interact 런타임 환경에 Interact와 함께 포함된 기본 DDL(Data Definition Language)을 수정한 런타임 시스템 테이블에 대한 사용자 정의가 포함되어 있는 경우 데이터베이스가 사용자 정의와 일치하도록 기본 SQL 업그레이드 스크립트를 수정해야 합니다.
일반적인 사용자 정의에는 여러 대상 레벨을 지원하거나 테이블 보기를 사용하도록 하는 변경이 포함됩니다. IBM 제품의 새 버전에 대한 데이터 사전을 검토하여 열 크기가 올바로 맵핑되고 추가 제품의 외부 키 제한조건이 충돌하지 않는지 확인할 수 있습니다.
개정해야 할 가능성이 높은 SQL 업그레이드 스크립트는 aci_runtab_upgrdaci_usrtab_upgrd입니다.
*
Interact 업그레이드 도구를 실행하기 전에 변경을 완료해야 합니다.
SQL 업그레이드 스크립트를 검토하고 수정하려면 다음 단계를 완료하십시오.
1.
데이터베이스 유형에 맞는 업그레이드 스크립트를 찾으십시오. 업그레이드 모드에서 IBM EMM 설치 프로그램을 실행하면 Interact 설치의 /ddl/Upgrades 또는 /ddl/Upgrades/Unicode 디렉토리에 스크립트가 설치됩니다.
2.
데이터베이스 스키마가 Interact에 포함된 DDL(Data Definition Language)과 일치하는지 확인하십시오. 데이터베이스 스키마가 업그레이드 스크립트의 DDL과 일치하지 않는 경우 데이터베이스 유형이 환경과 일치하도록 스크립트를 편집하십시오.
다음 예는 가정(Household) 대상 레벨을 지원하려면 aci_runtab_upgrd SQL 업그레이드 스크립트에서 수정해야 하는 사항을 보여줍니다.
기존의 Interact 디자인 시간 환경에는 가정(Household)이라는 추가 대상 레벨이 포함되어 있습니다. 가정(Household) 대상 레벨을 지원하기 위해 Interact 런타임 환경 데이터베이스에 HH_CHStaging and HH_RHStaging 테이블이 포함되어 있습니다.
업그레이드 스크립트에 필요한 변경사항
a.
b.
다음 예의 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