How to prevent duplicate child records for the same parent record?
Record Triggered Flow- Summer’20 Salesforce Release Feature

Requirement: I have a business use case where I need to restrict users from entering duplicate child records for the same parent record.
Logic:
I decided to create one unique text field on the child object and then update it with a unique key value.
As the field marked as unique if a duplicate record comes with the same key then the system will throw an error message.
Solution Spectrum: I had various options on hand to achieve this but I found the record triggered flow is the best option.
Option 1: Formula Field + Using Duplicate and matching rule
Option 2: Text Field + Workflow Field Update + Duplicate and matching rule
Option 3: Text field + Process Builder
Option 4: Before Event Apex Trigger
Option 5: Before Event, Record Triggered Flow (Summer’20 Release)
Option 1: Formula Field + Using Duplicate and matching rule
Steps:
I created a formula field on the child object to populate (Parent.Id+CurrentRecord.State) Because I wanted unique records by State.
Then I tried to use this field in the Matching rule to find duplicates, but it's not available there because of the formula field.
Outcome:
This Solution didn’t work.
Option 2: Text Field + Workflow Field Update + Duplicate and matching rule
Steps:
Create a Text field instead of a formula field.
Update field with unique key value using a workflow field update on the child object.
Create duplicate and matching rules to show an error message.
Pros:
Easy to configure
User-friendly error message on duplication
Cons:
Performance issue — Rules on child records, will execute for all records under the parent.
Workflows are executed very late in the execution context
Same object update is there hence recursion must be handled.
Because of this update if there are any other workflows or process builders or triggers are there on the same object then those will be executed.
Outcome:
Works but not recommended, due to poor performance.
Option 3: Text field (Mark it as Unique) + Process Builder
Steps:
Create a Text field marked as unique.
Update field with unique key value using a Process builder action field update on the child object.
Pros:
Easy to configure
The unique field will handle to display the error
Cons:
Performance issue — Process Builder
Same object update is there hence recursion must be handled.
Because of this update if there are any other workflows or process builders or triggers are there on the same object then those will be executed.
Outcome:
Works but not recommended, due to poor performance.
Option 4: Before Event Apex Trigger
Steps:
Write before insert/update event trigger
throw error from trigger using .addError() standard method.
Pros:
Easy to build
Before the event trigger, it is, hence no need to make any DML
No need to worry about recursion
Cons:
Test class and Code coverage is required
Outcome:
This solution works but a better solution is available :)
Option 5: Before Event, Record Triggered Flow (Summer’20 Release)
Steps:
Create a Text field mark it as Unique.
Update field with unique key value using a flow (Before Save Record Triggered)
The system will throw an error preventing duplication.

Pros:
Easy to configure
Faster performance
No need to worry about recursion
Doesn’t fire any other workflow, process builder or triggers
Cons:
Not really if you are comfortable building a flow.
Outcome:
Works very well.

Thank you for reading my post, please share your thoughts and comments.