覆寫 | 不覆寫
有效對象
Replicat
說明
使用 OVERRIDEDUPS 和 NOOVERRIDEDUPS 參數來控制 Replicat 是否以複製的現有記錄覆寫目標資料庫中的現有記錄 (如果兩筆記錄都具有相同的索引鍵)。
-
OVERRIDEDUPS會覆寫現有的記錄。它可用於起始載入,您不想在載入前截斷目標表格,或重新同步目標表格與信任的來源。使用SQLDUPERR參數搭配OVERRIDEUPS,指定資料庫針對重複INSERT作業所傳回的數值錯誤代碼。如需詳細資訊,請參閱SQLDUPERR。 -
NOOVERRIDEDUPS(預設值) 會產生重複記錄錯誤,而非覆寫現有記錄。您可以使用含有SQLEXEC子句的MAP敘述句來起始對錯誤的回應。否則,交易可能會中止。若要略過重複的記錄,而不會導致 Replicat 在無法使用異常狀況對應時中止,請指定類似以下的
REPERROR參數敘述句,其中<error>是主索引鍵限制條件錯誤的資料庫錯誤編號。
REPERROR (<error>, IGNORE)
例如,Oracle AI Database 的陳述如下:
REPERROR (1, IGNORE)
Replicat 會將忽略的重複記錄寫入捨棄檔。
將 OVERRIDEDUPS 或 NOOVERRIDEDUPS 置於您要影響之 TABLE 或 MAP 陳述式之前。您可以為不同的 TABLE 或 MAP 陳述式群組建立不同的規則。參數會做為切換:後續 TABLE 或 MAP 陳述式會維持有效,直到遇到另一個陳述式為止。
使用 HANDLECOLLISIONS 時,會自動啟用 OVERRIDEDUPS。如需詳細資訊,請參閱 HANDLECOLLISIONS | NOHANDLECOLLISIONS 。
WARNING:當 OVERRIDEDUPS 生效時,可能不會依照多個 Replicat 處理作業的時間順序來處理記錄。
預設
NOOVERRIDEDUPS
語法
OVERRIDEDUPS | NOOVERRIDEDUPS