Conflict Resolution Scope
Each conflict-resolution rule behaves differently depending on the scope.
Enterprise Replication uses the following scopes:
- Row scope
When you choose a row scope, Enterprise Replication evaluates one row at a time. Only replicated rows that win the conflict resolution with the target rows are applied. If an entire replicated transaction receives row-by-row evaluation, some replicated rows are applied while other replicated rows might not be applied. Row scope can result in fewer failures than transaction scope.
- Transaction scope
When you choose a transaction scope, Enterprise Replication applies the entire transaction if the replicated transaction wins the conflict resolution. If the target wins the conflict (or other database errors are present), the entire replicated transaction is not applied.
A transaction scope for conflict resolution guarantees transactional integrity.
Enterprise Replication defers some constraint checking on the target tables until the transaction commits. If a unique constraint or foreign-key constraint violation is found on any row of the transaction at commit time, the entire transaction is rejected (regardless of the scope) and, if you have ATS set up, written to the ATS directory.
Transaction and row scopes are only applicable for apply failure related to conflict resolution, such as missing rows or newer local rows. For other errors, such as lock timeouts, constraint problems, lack of disk space, and so on, the whole incoming transaction is aborted, rolled back, and spooled to ATS or RIS files if so configured, regardless of whether row scope is defined.