Resumo: neste tutorial, irá aprender sobre a chave estrangeira do PostgreSQL e como adicionar chaves estrangeiras às tabelas usando restrições de chave estrangeiras.

Introdução à restrição de chave estrangeira PostgreSQL

uma chave estrangeira é uma coluna ou um grupo de colunas de uma tabela que referencia a chave primária de outra tabela.

a tabela que contém a chave estrangeira é chamada de tabela referenciadora ou tabela infantil. E a tabela referenciada pela chave estrangeira é chamada de tabela referenciada ou tabela-mãe.,

uma tabela pode ter várias chaves estrangeiras dependendo de suas relações com outras tabelas.

no PostgreSQL, você define uma chave estrangeira usando a restrição de chave estrangeira. A restrição de chave estrangeira ajuda a manter a integridade referencial dos dados entre as tabelas de filhos e pais.

uma restrição de chave estrangeira indica que os valores numa coluna ou num grupo de colunas na tabela-filhos são iguais aos valores numa coluna ou num grupo de colunas da tabela-mãe.,

PostgreSQL restrição de chave estrangeira sintaxe

A seguir ilustra uma restrição de chave externa sintaxe:

nesta sintaxe:

  • Primeiro, especifique o nome para a restrição de chave externa após o CONSTRAINT palavra-chave. A cláusula CONSTRAINT é facultativa. Se o omitir, o PostgreSQL irá atribuir um nome gerado automaticamente.
  • Em segundo lugar, indique uma ou mais colunas de chave estrangeiras entre parênteses após o FOREIGN KEY palavras-chave.,
  • Em terceiro lugar, especificar a tabela-mãe e as colunas-chave-mãe referenciadas pelas colunas-chave estrangeiras na cláusula .
  • finalmente, indique as acções de remoção e actualização nas cláusulas ON DELETE e ON UPDATE.

as acções de apagar e actualizar determinam os comportamentos quando a chave primária na tabela-mãe é eliminada e actualizada. Uma vez que a chave primária é raramente atualizada, o ON UPDATE action não é frequentemente usado na prática. Vamos concentrar-nos na acção ON DELETE.,

o PostgreSQL suporta os seguintes acções:

  • SET NULL
  • DEFINIR PADRÃO
  • RESTRINGIR
  • NENHUMA AÇÃO
  • CASCATA

PostgreSQL restrição de chave estrangeira exemplos

as instruções A seguir de criar a tag customers e contacts tabelas:

neste exemplo, o customers tabela é a tabela pai e o contacts tabela é a tabela filho.cada cliente tem zero ou muitos contactos e cada contacto pertence a zero ou a um cliente.,

customer_id coluna contacts tabela é a coluna de chave estrangeira que referencia a chave primária da coluna com o mesmo nome customers tabela.

O seguinte restrição de chave externa fk_customer contacts tabela define o customer_id como o de chave estrangeira:

Devido a restrição de chave externa não tem o ON DELETE e ON UPDATE ação, elas padrão para NO ACTION.,

NENHUMA AÇÃO

O seguinte insere dados a customers e contacts tabelas

a instrução A seguir exclui a identificação do cliente 1, a partir de customers tabela:

Code language: SQL (Structured Query Language) (sql)

em Vez de ON DELETE NO ACTION PostgreSQL problemas de uma violação de restrição, porque a referência a linhas de identificação do cliente 1 ainda existem no contacts tabela:

RESTRICT ação é semelhante ao NO ACTION., A diferença só surge quando você definir a restrição de chave externa DEFERRABLE com um INITIALLY DEFERRED ou INITIALLY IMMEDIATE modo. Discutiremos mais sobre isso no tutorial subsequente.

SET NULL

SET NULL define automaticamente NULL colunas da chave estrangeira na referência de linhas da tabela filho quando as linhas referenciadas na tabela principal são excluídos.,

As seguintes instruções de largar as tabelas de exemplo e recriá-las com a chave estrangeira que usa o SET NULL ação ON DELETE cláusula:

as instruções A seguir inserir dados em um customers e contacts tabelas:

Para ver como o SET NULL funciona, vamos excluir o cliente com o id 1, a partir de customers tabela:

Code language: SQL (Structured Query Language) (sql)

em Vez de ON DELETE SET NULL ação, a referência a linhas contacts tabela definida para NULL., A instrução a seguir apresenta os dados de contacts tabela:

Como pode ser visto claramente a saída, as linhas que têm o customer_id 1 agora tem o customer_id define NULL

CASCATA

ON DELETE CASCADE apaga automaticamente todas as linhas de referência na tabela filho quando as linhas referenciadas na tabela principal são excluídos., Na prática, o ON DELETE CASCADE é a opção mais comumente usada.

as seguintes indicações recriam as tabelas de amostras.,iv> alterações CASCADE:

a instrução A seguir exclui o id de cliente 1:

em Vez de ON DELETE CASCADE ação, todas as linhas de referência contacts tabela são automaticamente excluídos:

DEFINIR PADRÃO

ON DELETE SET DEFAULT define o valor padrão para a coluna de chave estrangeira de referência de linhas na tabela filho quando referenciado linhas da tabela principal são excluídos.,nt para uma tabela existente

Para adicionar uma restrição de chave estrangeira para a tabela existente, você pode usar o seguinte formulário da instrução ALTER TABLE:

Quando você adicionar uma restrição de chave estrangeira com ON DELETE CASCADE opção para uma tabela existente, você precisa seguir estes passos:

Primeiro, largar existente restrições de chave estrangeira:

Code language: SQL (Structured Query Language) (sql)

Primeiro, adicionar uma nova restrição de chave estrangeira com ON DELETE CASCADE ação:

neste tutorial, você aprendeu sobre o PostgreSQL chaves estrangeiras e como usar a restrição de chave externa para criar chaves estrangeiras de uma tabela.,

  • este tutorial foi útil ?
  • YesNo