Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: insert

Можно ли в рамках одного SQL-запроса вставить данные в несколько таблиц стандартными средствами SQL?

Вопрос проверяет понимание возможностей SQL и способов выполнения связанных операций вставки.

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

В стандартном SQL напрямую вставить данные в несколько таблиц одним простым INSERT нельзя. Однако можно использовать транзакции или CTE с RETURNING, чтобы выполнить связанные вставки в одном запросе. Это часто применяется в PostgreSQL. Такой подход позволяет сохранить целостность данных.

Длинный ответ

Часто требуется вставить данные в несколько таблиц, например:

  • сначала создать запись пользователя

  • затем создать связанные записи

1. Использование транзакции

Самый распространённый способ:

BEGIN;

INSERT INTO users (...) VALUES (...);
INSERT INTO profiles (...) VALUES (...);

COMMIT;

Это гарантирует:

  1. Целостность данных

  2. Откат при ошибке

2. Использование CTE в PostgreSQL

Определение:
CTE (Common Table Expression) — это временный результат запроса, который можно использовать далее.

Пример:

WITH new_user AS (
  INSERT INTO users(name)
  VALUES ('Ivan')
  RETURNING id
)
INSERT INTO profiles(user_id)
SELECT id FROM new_user;

Это позволяет:

  1. Выполнить несколько вставок

  2. Передать данные между ними

3. Когда это полезно

Типичные случаи:

  1. Создание связанных сущностей

  2. Генерация ID

  3. Связанные записи

4. Ограничения

Важно учитывать:

  1. Не все СУБД поддерживают CTE одинаково

  2. Сложные запросы труднее поддерживать

Вывод

Вставка в несколько таблиц возможна через транзакции или CTE. В PostgreSQL CTE с RETURNING — удобный способ связать несколько операций в одном запросе.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#insert

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.