FOREIGN KEY
Ограничение, связывающее колонку с первичным ключом другой таблицы. Обеспечивает ссылочную целостность.
REFERENCES parent_table(parent_col) [ON DELETE CASCADE|SET NULL|RESTRICT]
Объяснение
Пример
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);
Связанные термины
Анекдоты по теме
— Зачем нужен NOT NULL DEFAULT вместо просто DEFAULT? — ALTER TABLE users ADD COLUMN score INT DEFAULT 0; — В PostgreSQL с 11 версии это мгновенно. — Раньше? — До PostgreSQL 11 добавление колонки с NOT NULL DEFAULT переписывало всю таблицу. — Хорошо что обновились. — Ещё как.
— Зачем нужен pg_dump? — Создаёт логический бэкап базы данных. — Чем от физического бэкапа отличается? — Физический (pg_basebackup): копирует файлы. Быстро для полного восстановления. — Логический (pg_dump): SQL команды. Можно восстановить отдельную таблицу, мигрировать версии. — Что выбрать? — Оба. Физический для DR, логический для гибкости.
— Чем коррелированный подзапрос отличается от обычного? — Обычный выполняется один раз. Коррелированный — для каждой строки внешнего запроса. — Это плохо? — Зависит от размера таблицы. При миллионе строк — миллион подзапросов.