Avoiding insert and update errors in Instance Data Replication
Summarize
Summary of Avoiding insert and update errors in Instance Data Replication
This guidance addresses how to prevent insert and update failures in Instance Data Replication (IDR) for producer replication sets created before the Utah release. Failures typically occur when replicating parent tables along with their child tables without proper filtering bysysclassname.
Show less
Key Points
- Sysclassname filter requirement: When replicating a parent table and one or more child tables, you must add a sysclassname filter to the parent table’s outbound entry in the producer replication set. This avoids unique key violations and update failures.
- Insert failure scenario: Without the filter, replicating a child table record can cause duplicate inserts with the same sysid into the parent table, resulting in failure.
- Update failure scenario: If a new child record is created on the producer, IDR initially creates only the parent record on the consumer. Subsequent updates to the child record fail because the child record does not yet exist on the consumer.
Practical Application
- Replicating parent and child tables: Determine which child tables you want to replicate. Add a sysclassname filter specifying the parent table type (e.g., for the Task table, use [Task Type] [is] [Task]) to the outbound entry of the parent table.
- Replicating only the parent table: The sysclassname filter on the parent table is optional.
- Replicating only child tables: If you replicate only child tables, adding a sysclassname filter on the parent table is also optional.
- Editing existing replication sets: If the parent table is already replicated, update its outbound entry to include the necessary sysclassname filter when child tables are involved.
Why This Matters
Properly applying the sysclassname filter prevents replication errors that can disrupt synchronization between instances. This ensures data integrity and consistent replication of parent-child table relationships without insert or update failures.
You can avoid insert and update failures in Instance Data Replication (IDR) by specifying a class name filter in the producer replication set.
When you replicate a parent table and one or more child tables, you must add a sys_class_name filter to the parent table in the outbound entry of your producer replication set. If the sys_class_name filter is missing, insert and update failures appear in in the following scenarios:
- A failed insert occurs when a record in the child table is replicated because the system attempts two inserts with the same sys_id to the parent table. Adding the sys_class_name filter to the parent prevents the unique key violation during the INSERT into the parent table.
- A new record is added to a replicated child table on the producer instance. Instance Data Replication (IDR) initially creates the record in the parent table on the consumer, but not the child table. If the child record is changed on the producer instance, during replication a failed update occurs on the child table in the consumer instance because the record only exists in the parent table.
If the table is a parent, decide if you want to replicate any of its child tables.
- If you want to replicate one or more child tables, you must identify the sys_class_name value
for the parent table, and then add a corresponding sys_class_name filter to the parent
table.
For example, Task Type is the label for sys_class_name on the Task [task] table. To start replicating the incidents in addition to tasks, you must add [Task Type] [is] [Task] to the outbound entry for the Task [task] table.
- If you only want to replicate the parent table, the filter is optional.
- If the parent table is already being replicated, you must edit the parent and add the sys_class_name filter.
If the table is a child, decide if you want to replicate its parent.
- If you want to replicate the parent table as well, you must identify the sys_class_name value
for the parent table, and then add a corresponding sys_class_name filter to the parent
table.
For example, Task Type is the label for sys_class_name on the Task [task] table. To start replicating tasks in addition to incidents, you must add [Task Type] [is] [Task] to the outbound entry for the Task [task] table.
- If you only want to replicate the child table, the filter is optional.
- If one or more child tables are already being replicated, you must add the sys_class_name filter to the parent.