I want to make a check constraint or a unique index to validate that I'm not creating duplicates within my table based on 2 columns, I do not want the same two IDs in these columns.
Thinking about something like below: (but this isn't possible)
CREATE UNIQUE INDEX entity_merge_no_recursive_merge_request_index on ENTITY_MERGE (
TYPE_CODE,
CONCAT(
IIF(INTO_ID > FROM_ID, INTO_ID, FROM_ID),
'|',
IIF(INTO_ID < FROM_ID, INTO_ID, FROM_ID)
)
)
Example of what I would like to achieve:
| ID | TYPE_CODE | FROM_ID | TO_ID |
|---|---|---|---|
| 1 | PERSON | 3 | 5 |
| 2 | USER | 3 | 5 |
| 3 | PERSON | 5 | 3 |
I want to make sure that inserting the last one here would have failed, because it's the same as ID 1 but reversed.
And it's important to not have any rules on FROM_ID to be higher or lower than TO_ID as it should be possible to merge any 2 records and either have some automation or a user via frontend to choose who is the winner record. And this would inactivate the FROM_ID record.