Você pode usar PERSISTED COMPUTED colunas com uma instrução case, mas no final, você não compra nada além de despesas gerais.
A melhor solução seria modelá-los como três valores distintos para começar.
CREATE TABLE Mails (MailID INTEGER PRIMARY KEY)
CREATE TABLE Phones (PhoneID INTEGER PRIMARY KEY)
CREATE TABLE Emails (EmailID INTEGER PRIMARY KEY)
CREATE TABLE PartyChannel (
ID INTEGER NOT NULL
, ChannelID INTEGER NOT NULL
, ChannelType CHAR(1) NOT NULL
, MailID AS (CASE WHEN [ChannelType] = 'M' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Mails (MailID)
, PhoneID AS (CASE WHEN [ChannelType] = 'P' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Phones (PhoneID)
, EmailID AS (CASE WHEN [ChannelType] = 'E' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Emails (EmailID)
)
Isenção de responsabilidade
só porque você pode não significa que você deve.