Gymterview
junior

Может ли значение в столбце с ограничением FOREIGN KEY равняться NULL?

Да, значение в столбце с ограничением FOREIGN KEY может быть NULL, если на данный столбец не наложено дополнительное ограничение NOT NULL. FOREIGN KEY проверяет ссылочную целостность только для не-NULL значений — если значение равно NULL, проверка соответствия в родительской таблице не выполняется.

Это поведение позволяет моделировать необязательные связи. Например, сотрудник может не иметь руководителя (генеральный директор):

Пример
CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    manager_id INT REFERENCES employees(id)  -- может быть NULL
);

-- Вставка сотрудника без руководителя — допустимо
INSERT INTO employees (name, manager_id) VALUES ('CEO', NULL);

Если связь обязательна (каждый заказ должен принадлежать пользователю), добавьте NOT NULL:

Пример
user_id INT NOT NULL REFERENCES users(id)

На собеседовании: ответ — да, если нет NOT NULL. Частая ошибка — считать, что FOREIGN KEY автоматически запрещает NULL.