审阅并修改 SQL 升级脚本
如果 Interact 运行时环境包括对运行时系统表的定制,并且这些定制修改了 Interact 随附的缺省数据定义语言 (DDL),那么必须修改数据库的缺省 SQL 升级脚本以与您的定制匹配。
常见定制包括支持多个受众级别的更改或使用表视图的更改。您可以审阅新版本的 IBM® 产品的数据字典,以确认正确映射了列大小并且来自其他产品的外键约束不会发生冲突。
aci_runtab_upgrdaci_usrtab_upgrd 是最可能需要修订的 SQL 升级脚本。
*
运行 Interact 升级工具前,必须完成这些更改。
完成以下步骤以审阅并修改 SQL 升级脚本:
1.
找到与您数据库类型相应的升级脚本。以升级方式运行 IBM® EMM 安装程序后,这些脚本安装在 Interact 安装下的 /ddl/Upgrades/ddl/Upgrades/Unicode 目录中。
2.
确保数据库模式与 Interact 随附的数据定义语言 (DDL) 匹配。如果数据库模式与升级脚本中的 DDL 不匹配,请编辑与您数据库类型相应的脚本以与环境匹配。
以下示例显示了必须对 aci_runtab_upgrd SQL 升级脚本进行的修改,以支持“家庭”受众级别:
现有 Interact 设计时环境包含一个名为“家庭”的额外受众级别。为了支持“家庭”受众级别,Interact 运行时环境数据库包含名为 HH_CHStaging 和 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