覆盖系统生成的列值

定义为将系统生成的值分配给它们的大多数列不允许用户绕过数据库生成值。 在 INSERT , UPDATE 或 MERGE 语句中,只有 ROWID ,身份和行更改时间戳记列可以将其系统值由OVER骑系统值子句覆盖。

REPLICATION_OVERRIDE 全局变量是 OVEROVERRIDE SYSTEM VALUES 子句的替代变量,它适用于所有生成的列。

在需要保持现有行映像完整的情况下,使用 REPLICATION_OVERRIDE 全局变量会导致当前会话的行为更改。 当 REPLICATION_OVERRIDE 设置为 "Y" 时,将完成该会话中的后续 INSERT , UPDATE 和 MERGE 语句,而不更改用户为系统生成的列提供的值。

REPLICATION_OVERRIDE 全局变量只能由有权使用 QIBM_DB_GENCOL_OVERRIDE 函数用法标识的用户修改。

使用 REPLICATION_OVERRIDE 时,必须在插入新行时提供所有生成列的值。

SET QSYS2.REPLICATION_OVERRIDE ='Y';

一旦设置了全局变量,在同一会话中执行的 INSERT 语句将导致 STAGING_TABLE 中的列值按当前方式使用,包括生成的列。

INSERT INTO PRODUCTION_TABLE 
   SELECT * FROM STAGING_TABLE; 

由于 REPLICATION_OVERRIDE 的典型用途是用于数据模型管理和变更管理,因此使用 REPLICATION_OVERRIDE 还会阻止为更新操作生成系统时间段时态表历史记录。