SQLLab
Глоссарий/FOREIGN KEY
DDL / СхемаНачальный

FOREIGN KEY

Ограничение, связывающее колонку с первичным ключом другой таблицы. Обеспечивает ссылочную целостность.

Синтаксис
REFERENCES parent_table(parent_col) [ON DELETE CASCADE|SET NULL|RESTRICT]

Объяснение

FOREIGN KEY гарантирует: в колонке могут быть только значения, существующие в родительской таблице. При DELETE/UPDATE родительской строки: ON DELETE CASCADE (удалить дочерние), ON DELETE SET NULL, ON DELETE RESTRICT (запретить, по умолчанию). Всегда добавляй индекс на колонку FK — иначе поиск и JOIN медленные.

Пример

CREATE TABLE orders (
  id         BIGINT PRIMARY KEY,
  user_id    BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  product_id BIGINT REFERENCES products(id) ON DELETE RESTRICT
);

-- Индекс на FK обязателен!
CREATE INDEX ON orders (user_id);