Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como adicionar uma restrição de chave estrangeira a uma tabela existente no SQL Server (T-SQL)


Em termos de banco de dados, uma chave estrangeira é uma coluna vinculada ao campo de chave primária de outra tabela em uma relação entre duas tabelas.

Uma chave estrangeira é um tipo de restrição e, portanto, se você quiser criar uma chave estrangeira no SQL Server, precisará criar uma restrição de chave estrangeira.

Este artigo demonstra como criar uma restrição de chave estrangeira no SQL Server, usando Transact-SQL.


Exemplo


A maneira mais fácil de demonstrar isso é com um exemplo. Neste exemplo, usamos T-SQL para criar uma restrição de chave estrangeira usando o ALTER TABLE demonstração:
USE Music;
ALTER TABLE Albums
  ADD CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
      REFERENCES dbo.Artists (ArtistId)
      ON DELETE CASCADE    
      ON UPDATE CASCADE
  ;
GO

Isso cria uma relação entre duas tabelas (os Albums tabela e os Artists) tabela). Fazemos isso criando uma restrição de chave estrangeira nos Albums tabela. Especificamos que o arquivo Albums.ArtistId coluna é uma chave estrangeira para o Artists.ArtistId coluna.

Isso obviamente pressupõe que as duas tabelas existem. Se não o fizessem, teríamos um erro.

Também usamos GO que na verdade não faz parte do T-SQL. É reconhecido por vários utilitários para sinalizar o fim de um lote de instruções T-SQL.

Verifique o resultado


Você pode verificar o resultado executando o seguinte script:
USE Music;
SELECT 
    name,
    type_desc,
    delete_referential_action_desc,
    update_referential_action_desc
FROM sys.foreign_keys;
GO

Isso lista as chaves estrangeiras no Music base de dados. Altere o nome do banco de dados para se adequar.

Se o seu banco de dados tiver muitas chaves estrangeiras, você sempre poderá reduzi-lo com um WHERE cláusula para a chave estrangeira específica em que você está interessado. Você também pode usar o caractere curinga (* ) se você precisar que todas as colunas sejam retornadas.