Встречается на собеседованиях • сегодня
Будет ли работать Foreign Key одной таблицы относящийся к Unique Key другой таблицы, если Unique Key состоит из 2 колонок и одна из них имеет значение NULL
Да, будет работать, но с ограничениями. В MySQL, если хотя бы один столбец в составном Unique Key содержит NULL, то ограничение уникальности не применяется для этой строки. Это означает, что может существовать несколько строк с одинаковыми значениями в не-NULL столбцах, что может нарушить целостность Foreign Key.
Пример:
sql
CREATE TABLE parent (
id INT,
code VARCHAR(10),
UNIQUE KEY (id, code) -- Составной уникальный ключ
);
CREATE TABLE child (
child_id INT PRIMARY KEY,
parent_id INT,
parent_code VARCHAR(10),
FOREIGN KEY (parent_id, parent_code)
REFERENCES parent(id, code) -- Внешний ключ
);
-- Вставка в parent с NULL в code допустима
INSERT INTO parent VALUES (1, NULL);
INSERT INTO parent VALUES (1, NULL); -- Повторная вставка возможна
-- Вставка в child с NULL в parent_code будет работать
INSERT INTO child VALUES (1, 1, NULL);В PostgreSQL и других СУБД поведение может отличаться - там составные уникальные ключи с NULL могут работать иначе.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы