| Previous | Next |
| DB_E_NOTABLE | DB_E_BADCOPY |
DB_E_CONCURRENCYVIOLATION
Meaning
Windows documents DB_E_CONCURRENCYVIOLATION as “Rowset used optimistic concurrency and the value of a column has changed since it was last read”. Here, an optimistic rowset update detects that a compared column changed since the consumer last read the row.
Relevant OLE DB contract
This result must be interpreted against this contract: OLE DB rowsets own HROW values, fetch position, granted properties and visibility rules; row handles, bookmarks, update state and navigation capabilities remain valid only under the lifetime and generation that produced them.
Start with the current rowset instance, its granted properties and the exact row or position token used by the consumer when investigating this result.
Evidence to collect before changing the system
- Evidence 1: the row key and compared-column set.
- Evidence 2: original, current and proposed value hashes.
- Evidence 3: transaction isolation and row-version metadata.
Specific conditions that produce it
- Cause 1: another transaction updated the row.
- Cause 2: a trigger or server process changed a concurrency column.
- Cause 3: the consumer submits stale original values after a long edit interval.
Retry and recovery policy
Retry rule: retry only after refreshing the row and deciding how to reconcile the competing update.
Corrective actions
- Action 1: reread the row and present a deliberate merge or conflict decision.
- Action 2: use row-version columns when the provider supports them.
- Action 3: avoid blind retries that overwrite concurrent changes.
Practical incident
Two users edit the same record and the second submits original values from an older row version; reloading and merging prevents repeated it.
Difference from related HRESULT values
DB_E_INTEGRITYVIOLATION reports a constraint failure, while DB_E_CONCURRENCYVIOLATION reports that optimistic comparison detected a concurrent change.
Official Microsoft references
Looking for a different code? Search another status or error code.
