Внешний ключ — это столбец (или набор столбцов) в дочерней таблице, который ссылается на первичный ключ или уникальный ключ в родительской таблице. Эта связь гарантирует, что каждое значение в столбце внешнего ключа соответствует существующей записи в родительской таблице.
Внешний ключ предотвращает несоответствия данных, применяя следующие правила:
Эти правила предотвращают появление осиротевших строк — записей в дочерней таблице, которые ссылаются на несуществующую родительскую запись.
Внешние ключи можно настроить с каскадным поведением, чтобы автоматически обрабатывать связанные изменения:
ON DELETE CASCADE -- удаляет строки в дочерней таблице при удалении строки родителя
ON UPDATE CASCADE -- обновляет значения внешнего ключа в дочерней таблице при изменении ключа родителя
Другие доступные варианты — SET NULL и SET DEFAULT — обновляют столбец в дочерней таблице вместо удаления строки.
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE CASCADE
);
Здесь customer_id в таблице orders должен совпадать с существующим customer_id в таблице customers. Если клиент удаляется, его заказы автоматически удаляются вместе с ним.
Внешний ключ может ссылаться только на первичный ключ в родительской таблице, но не на уникальный ключ.
Новый — ещё не проверен сообществом
Вы