Вы не можете сделать это автоматически. Но вы можете сделать это с помощью некоторых запросов. Сначала вы устанавливаете для всех внешних ключей правильный идентификатор, который предположительно является наименьшим:
with ids (
select t1.*, min(id) over (partition by Model, ItemType, Color) as min_id
from table1 t1
)
update t2
set t2.otherid = ids.min_id
from table2 t2 join
ids
on t2.otherid = ids.id
where ids.id <> ids.min_id;
Затем удаляете идентификаторы, которые либо дублируются, либо не упоминаются в table2
(в зависимости от того, какой вы на самом деле хотите):
with ids (
select t1.*, min(id) over (partition by Model, ItemType, Color) as min_id
from table1 t1
)
delete from ids
where id <> min_id;
Примечание. Если в базе данных есть одновременные пользователи, вы можете перевести ее в однопользовательский режим для этой операции или заблокировать таблицы, чтобы они не изменялись во время этих двух операций.