覆盖 | 覆盖
有效对象
复制
说明
使用 OVERRIDEDUPS 和 NOOVERRIDEDUPS 参数可以控制是否复制与现有记录具有相同关键字时,Replicat 是否覆盖目标数据库中的现有的记录。
-
OVERRIDEDUPS将覆盖现有记录。它可用于不希望在加载之前截断目标表的初始加载,或用于将目标表与可信源重新同步。将SQLDUPERR参数与OVERRIDEUPS一起使用可指定数据库为重复的INSERT操作返回的数字错误代码。有关更多信息,请参见 "SQLDUPERR"。 -
缺省情况下,
NOOVERRIDEDUPS将生成重复记录错误,而不是覆盖现有记录。可以使用带有SQLEXEC子句的异常错误MAP语句来启动对错误的响应。否则,事务处理可能会异常终止。要在异常映射不可用时绕过重复记录而不导致复制异常终止,请指定类似于以下内容的
REPERROR参数语句,其中<error>是主键约束条件错误的数据库错误号。
REPERROR (<error>, IGNORE)
例如,Oracle AI Database 的语句为:
REPERROR (1, IGNORE)
复制将忽略的重复记录写入丢弃文件。
将 OVERRIDEDUPS 或 NOOVERRIDEDUPS 放在希望其影响的 TABLE 或 MAP 语句之前。可以为 TABLE 或 MAP 语句的不同组创建不同的规则。参数充当切换:一个在后续的 TABLE 或 MAP 语句中保持有效状态,直到遇到另一个。
使用 HANDLECOLLISIONS 时会自动启用 OVERRIDEDUPS。有关更多信息,请参见 "HANDLECOLLISIONS | NOHANDLECOLLISIONS "。
WARNING:当 OVERRIDEDUPS 生效时,可能不会按时间顺序在多个复制进程中处理记录。
默认值
NOOVERRIDEDUPS
语法
OVERRIDEDUPS | NOOVERRIDEDUPS