Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The default global setting for a conflict can be changed with the SET_CONFLICT_HANDLERS FOR DEFAULT command. See the Command Reference or use HELP SET_CONFLICT_HANDLERS for the exact syntax.

 

Example:

Section
Column
width5%

 

Column
width95
Panel No Format
bgColorCCC
dbvrep> SET_CONFLICT_HANDLERS FOR DEFAULT FOR UPDATE ON DATA TO OVERWRITE

This sets the default conflict handler for updates to overwrite.

 

To show the default global conflict handlers use the SHOW_CONFLICT_HANDLERS command:

Section
Column
width5%

 

Column
width95
Panel No Format
bgColorCCC
dbvrep> SHOW_CONFLICT_HANDLERS FOR DEFAULT


The default handling is set as follows:


UPDATE (error): handler: RETRY logging: LOG


UPDATE (data): handler: OVERWRITE logging: LOG


DELETE (error): handler: RETRY logging: LOG


DELETE (data): handler: RETRY logging: LOG


INSERT (error): handler: RETRY logging: LOG


TRANSACTION (error): handler: RETRY logging: LOG

This shows the default conflict handler for updates to overwrite.

 Notes:

Note
  1. When the default global handlers are updated, this will only apply to newly prepared tables. Tables that have already been prepared (or replicated) will still use the previous defined default global handler. 
  2. We recommend to not set nontrivial default conflict handlers for the ERROR handlers. The reason is that if you get 0/many rows affected, the DATA handlers like OVERWRITE, NEWER, OLDER are a good way how to handle the conflict. If they fail, they fall through to the ERROR handler. If the ERROR handler is set to OVERWRITE, NEWER, OLDER, then the ERROR handler could loop forever. 
  3. The default handlers are also used if the conflict is "global", i.e. it's not for a particular table. The most prominent example is a conflict for a commit (e.g. a failed deferred constraint).