Eu tenho duas mesas:
Contato (ID, Tipo);
Endereço (ID).
É possível definir uma chave estrangeira de Endereço (ID,'A') para Contato (ID,Tipo)?
Eu tenho duas mesas:
Contato (ID, Tipo);
Endereço (ID).
É possível definir uma chave estrangeira de Endereço (ID,'A') para Contato (ID,Tipo)?
Supondo que você deseja implementar um relacionamento de supertipo/subtipo entre as duas tabelas (an
Address
é umContact
), você pode, com uma coluna com um valor fixo de'A'
e usá-lo para a chave estrangeira:e
Alternativamente, poderíamos declarar
Type
em Address como uma coluna computada persistente (a restrição de verificação não seria necessária então):Type AS CAST('A' AS varchar(10)) PERSISTED
Uma chave estrangeira precisa fazer referência a uma chave primária ou restrição exclusiva.
Olhando para suas tabelas, suponho que você deseja que os contatos tenham um ID que exista no endereço? Em caso afirmativo, desde que você tenha uma restrição
PRIMARY KEY
ouUNIQUE
na coluna ID em Endereço, então...Se você estiver dizendo que um contato deve ter um endereço que tenha um tipo 'A', será necessário usar um
INSTEAD OF
gatilho ou um procedimento armazenado executado em um agendamento para listar quaisquer contatos que não tenham o tipo de endereço 'A'.