Salesforce Decode
Salesforcedecode
Back to questions
ApexAdvanceddmltransactionspartial-success

Architect transaction boundaries and partial success DML

Real World Scenario

Bulk import must insert 500 related records where 20 fail validation but 480 should commit for manual correction later.

Expected Answer

• Database.insert(records, false) for partial success collecting Database.Error per row • Log failed rows with error messages to staging object for user remediation • AllOrNone=false implications on trigger side effects for partial batches • Savepoints for explicit rollback of sub-operations within single transaction • Separate validation pass in before trigger vs relying on DML error collection • UI surfacing partial success counts and downloadable error CSV • Retry job for corrected failed rows without reprocessing successes

Follow-Up Questions & Answers

Click to expand — each follow-up includes a direct, interview-ready answer

Direct answer: Database.insert(records, false) for partial success collecting Database.Error per row Also consider: Log failed rows with error messages to staging object for user remediation In practice: AllOrNone=false implications on trigger side effects for partial batches Optimize for scale and operational observability.

Architect Perspective

Partial success is UX and data integrity contract—document trigger behavior when half the batch commits.