Создание недостающих таблиц перед вставкой записей с внешними ключами

Сначала создаются network_device_profiles и radius_auth_settings с первичными ключами совместимого типа, затем dev_network. Ссылки без списка колонок направлены на primary key родительской таблицы.

Короткий ответ

Что ответить на собеседовании

Сначала создаются network_device_profiles и radius_auth_settings с первичными ключами совместимого типа, затем dev_network. Ссылки без списка колонок направлены на primary key родительской таблицы.

Подробный разбор

Ответ с пояснениями

Условие

Перед тем как добавить строки в целевую таблицу, необходимо сначала создать все требуемые структуры (таблицы).

create table dev_network
(
    device_id bigint generated by default as identity primary key,
    profile_ref bigint not null
        constraint fk_profile_ref references network_device_profiles,
    radius_settings_ref bigint not null
        constraint fk_radius_settings_ref references radius_auth_settings,
    ip_address inet not null unique,
    device_name varchar(200) not null unique,
    model varchar(200),
    description varchar(200)
);

Ответ

Сначала создаются network_device_profiles и radius_auth_settings с первичными ключами совместимого типа, затем dev_network. Ссылки без списка колонок направлены на primary key родительской таблицы.

Минимальные заглушки структуры для PostgreSQL:

CREATE TABLE network_device_profiles (
    id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
);
CREATE TABLE radius_auth_settings (
    id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
);

После этого можно выполнять CREATE TABLE dev_network из условия. Реальные поля профилей и настроек не заданы, поэтому их надо определить отдельно. До вставки устройства в родительских таблицах должны существовать соответствующие записи: одного создания таблиц недостаточно для прохождения внешних ключей. В миграции удаления порядок обратный.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее