Chave estrangeira

No contexto dos bancos de dados relacionais, uma chave estrangeira (em inglês, foreign key) ou chave externa é uma restrição que exige que os valores de uma coluna (ou de um grupo de colunas) correspondam a valores existentes em alguma linha de outra tabela. Com isso, mantém-se a integridade referencial entre as duas tabelas.

Definição

Por exemplo, dadas uma tabela de produtos e uma tabela de pedidos, pode-se garantir que a tabela de pedidos contenha apenas pedidos de produtos que existem, definindo uma chave estrangeira na tabela de pedidos que referencia a tabela de produtos:

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    product_no integer REFERENCES products (product_no),
    quantity integer
);

Se a lista de colunas referenciadas for omitida, a chave primária da tabela referenciada é usada.

Variações

Ações referenciais

Quando uma linha referenciada é excluída ou alterada, o comportamento é definido pelas ações ON DELETE e ON UPDATE (como CASCADE, RESTRICT ou SET NULL). Veja integridade referencial.

Referências

  1. 1 2 3 4 5 6 7 «5.5. Constraints» (em inglês). Documentação do PostgreSQL. Consultado em 21 de outubro de 2026

Ver também