Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como criar relações de chave estrangeira no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. Você cria uma relação entre duas tabelas quando deseja associar linhas de uma tabela com linhas de outra.
Nesse Tópico
Antes de começar:
Para criar relações de chave estrangeira usando:
Antes de começar
Limitações e restrições
Uma restrição de chave estrangeira não precisa ser vinculada apenas a uma restrição de chave primária em outra tabela; ele também pode ser definido para referenciar as colunas de uma restrição UNIQUE em outra tabela.
Quando um valor diferente de NULL é inserido na coluna de uma restrição FOREIGN KEY, o valor deve existir na coluna referenciada; caso contrário, será retornada uma mensagem de erro de violação de chave estrangeira. Para garantir que todos os valores de uma restrição de chave estrangeira composta sejam verificados, especifique NOT NULL em todas as colunas participantes.
As restrições FOREIGN KEY só podem fazer referência a tabelas que estão no mesmo banco de dados e no mesmo servidor. A integridade referencial em todos os bancos de dados deve ser implementada por gatilhos. Para obter mais informações, veja CREATE TRIGGER (Transact-SQL).
As restrições FOREIGN KEY podem fazer referência a outra coluna da mesma tabela. Isso se chama autorreferência.
Uma restrição FOREIGN KEY especificada no nível da coluna pode listar apenas uma coluna de referência. Essa coluna deve ter o mesmo tipo de dados da coluna na qual a restrição foi definida.
Uma restrição FOREIGN KEY especificada no nível da tabela deve ter o mesmo número de colunas de referência que o número de colunas na lista de colunas de restrição. O tipo de dados de cada coluna de referência também deve ser igual ao da coluna correspondente na lista de colunas.
O Mecanismo de Banco de Dados não tem um limite predefinido no número de restrições FOREIGN KEY que uma tabela pode conter que referenciam outras tabelas ou o número de restrições FOREIGN KEY que pertencem a outras tabelas que fazem referência a uma tabela específica. Entretanto, o número real de restrições FOREIGN KEY que pode ser usado é limitado pela configuração do hardware e pelo design do banco de dados e do aplicativo. Recomendamos que uma tabela não contenha mais de 253 restrições FOREIGN KEY e que ela não seja referenciada por mais de 253 restrições FOREIGN KEY.
Restrições FOREIGN KEY não são impostas em tabelas temporárias.
Se a chave estrangeira for definida em uma coluna de tipo de dados CLR definido pelo usuário, a implementação do tipo deverá oferecer suporte a uma ordenação binária. Para obter mais informações, veja Tipos CLR definidos pelo usuário.
Uma coluna do tipo
varchar(max)só poderá participar de uma restrição FOREIGN KEY se a chave primária referenciada também for definida como tipovarchar(max).
Segurança
Permissões
A criação de uma nova tabela com uma chave estrangeira requer a permissão CREATE TABLE no banco de dados e a permissão ALTER no esquema no qual a tabela está sendo criada.
A criação de uma chave estrangeira em uma tabela existente requer a permissão ALTER na tabela.
Como usar o SQL Server Management Studio.
Para criar uma relação de chave estrangeira no Designer de Tabela
No Pesquisador de Objetos, clique com o botão direito do mouse na tabela que estará no lado da chave estrangeira da relação e clique em Design.
A tabela é aberta no Designer de Tabelas.
No menu Designer de Tabela , clique em Relações.
Na caixa de diálogo Relações de Chave Estrangeira, clique em Adicionar.
A relação aparece na lista Relação Selecionada com um nome fornecido pelo sistema no formato FK_<tablename>_<tablename>, em que tablename é o nome da tabela de chave estrangeira.
Clique na relação na lista Relação Selecionada .
Clique em Especificação de Tabelas e Colunas na grade à direita e depois clique nas reticências (...) que aparecem à direita da propriedade.
Na caixa de diálogo Tabelas e Colunas , na lista suspensa Chave Primária , escolha a tabela que estará no lado da chave primária da relação.
Na grade abaixo, escolha as colunas que contribuem para a chave primária da tabela. Na célula de grade adjacente à esquerda de cada coluna, escolha a coluna de chave estrangeira correspondente da tabela de chave estrangeira.
ODesigner de Tabela sugere um nome para a relação. Para mudar esse nome, edite o conteúdo da caixa de texto Nome da Relação .
Escolha OK para criar a relação.
Usando Transact-SQL
Para criar uma chave estrangeira em uma nova tabela
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. O exemplo cria uma tabela e define uma restrição de chave estrangeira na coluna
TempIDque faz referência à colunaSalesReasonIDnaSales.SalesReasontabela. As cláusulas ON DELETE CASCADE e ON UPDATE CASCADE são usadas para garantir que as alterações feitas naSales.SalesReasontabela sejam propagadas automaticamente para aSales.TempSalesReasontabela.USE AdventureWorks2012; GO CREATE TABLE Sales.TempSalesReason (TempID int NOT NULL, Name nvarchar(50), CONSTRAINT PK_TempSales PRIMARY KEY NONCLUSTERED (TempID), CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) REFERENCES Sales.SalesReason (SalesReasonID) ON DELETE CASCADE ON UPDATE CASCADE );GO
Para criar uma chave estrangeira em uma tabela existente
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. O exemplo cria uma chave estrangeira na coluna
TempIDe faz referência à colunaSalesReasonIDnaSales.SalesReasontabela.USE AdventureWorks2012; GO ALTER TABLE Sales.TempSalesReason ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) REFERENCES Sales.SalesReason (SalesReasonID) ON DELETE CASCADE ON UPDATE CASCADE ; GOPara obter mais informações, consulte ALTER TABLE (Transact-SQL), CREATE TABLE (Transact-SQL)) e table_constraint (Transact-SQL).