Я понял, что вы хотите использовать только один столбец для assigned_to_id
и assigned_to_cluster_id
Так что, когда оно имеет отрицательное значение, оно будет указывать на строку в table A
, а при положительном -указать на строку в table B
Если это так, не делайте этого.
Это невозможно в реляционной базе данных, если это то, что вам нужно, вы не можете пометить ее как внешний ключи вам придется заново изобретать колесо и выполнять всю работу, которую база данных делает для вас сейчас
Это будет означать снятие ограничений внешнего ключа и, следовательно, потерю реляционной целостности
И много дополнительного кодирования, которое вам предстоит сделать
Чего вы все равно пытаетесь достичь, делая это?
Сохраняйте оба столбца, сохраняйте их как поля внешнего ключа, просто пишите регистр вВы выбираете заявления, если это проблема
select rw.ID,
...,
case when rw.assigned_to_id is not null then a.name
when rw.assigned_to_cluster_id is not null then b.name
else 'not assigned'
end as assigned_to
from request_workflow rw
left outer join tableA a on rw.assigned_to_id = a.id
left outer join tableB b on rw.assigned_to_cluster_id = b.id