A_or_B_IDTableZ'de gerçekten ihtiyacınız varsa, iki benzer seçeneğiniz vardır:
1) Tablo z'ye null yapılabilir A_IDve B_IDsütunlar ekleyin A_or_B_ID, bu iki sütunda ISNULL kullanarak hesaplanan bir sütun oluşturun ve yalnızca biri A_IDveya B_IDboş olmayacak şekilde bir DENETİM kısıtlaması ekleyin
2) Tablo z'ye, A veya B'yi içerecek şekilde kısıtlanmış bir TableName sütunu ekleyin. Şimdi A_IDve B_IDhesaplanan sütunlar olarak, yalnızca uygun tabloları adlandırıldığında (CASE ifadesini kullanarak) boş olmayanlar oluşturun. Onların da ısrar etmesini sağlayın
Her iki durumda da, artık temel tablolara uygun yabancı anahtarlara sahip olabilen A_IDve B_IDsütunlarınız vardır. Fark, sütunların hesaplandığı yerdir. Ayrıca, 2 kimlik sütununun alanları çakışmıyorsa yukarıdaki 2. seçenekte TableName'e ihtiyacınız yoktur - vaka ifadeniz hangi alanın A_or_B_ID
dahil olduğunu belirleyebildiği sürece
(Biçimlendirmemi düzelttiğim için yorum için teşekkürler)