Я предполагаю, что вы хотите непересекающиеся ссылки на первые две таблицы.
Вы можете довольно близко подойти к сохраненным вычисляемым столбцам:
Create Table1 (
id nvarchar(255)
);
Create Table2 (
id nvarchar(255)
);
Create Table3 (
id nvarchar(255),
type int not null check (type in 1, 2),
id_1 as (case when type = 1 then id end) persisted,
id_2 as (case when type = 2 then id end) persisted,
foreign key (id_1) references table_1(id),
foreign key (id_2) references table_2(id)
);
Здесь - это дБ <> скрипка. Это показывает ошибку, когда идентификатор неправильно ссылается на указанную таблицу.