Блоки · Бази даних

PostgreSQL

PostgreSQL з flow: SELECT, INSERT з RETURNING, JSONB, ON CONFLICT, схеми, функції та транзакції.

Призначення

Блок PostgreSQL працює лише з PostgreSQL-конекторами проєкту. Параметри в SQL — $1, $2, … (масив params у JSON). Підключення: /wiki/bazy-danyh-pidklyuchennya.

Підтримує RETURNING після INSERT/UPDATE, JSON/JSONB-поля, upsert через ON CONFLICT, перегляд схем і таблиць.

Підготовка

Налаштування → Бази даних → PostgreSQL. У конекторі або блоці вкажіть схему (за замовчуванням public).

Переконайтеся, що з сервера Epsenta (Hetzner) відкритий доступ до вашої БД (firewall, SSL за потреби).

  • SSL — увімкніть для managed Postgres (Supabase, Neon, RDS)
  • readOnly — для аналітичних SELECT без ризику запису
  • maxRows / queryTimeoutMs — захист від важких запитів

Усі дії (функції)

  • **SELECT (таблиця + WHERE)** — оберіть у полі «Дія»
  • **SELECT (SQL + параметри)** — оберіть у полі «Дія»
  • **INSERT рядок** — оберіть у полі «Дія»
  • **INSERT багато рядків** — оберіть у полі «Дія»
  • **UPDATE** — оберіть у полі «Дія»
  • **DELETE** — оберіть у полі «Дія»
  • **UPSERT (ON CONFLICT)** — оберіть у полі «Дія»
  • **Знайти один рядок** — оберіть у полі «Дія»
  • **Підрахувати** — оберіть у полі «Дія»
  • **Список таблиць** — оберіть у полі «Дія»
  • **Структура таблиці** — оберіть у полі «Дія»
  • **Схеми** — оберіть у полі «Дія»
  • **JSON/JSONB поле** — оберіть у полі «Дія»
  • **Stored procedure** — оберіть у полі «Дія»
  • **Функція** — оберіть у полі «Дія»
  • **Транзакція** — оберіть у полі «Дія»
  • **Довільний SQL** — оберіть у полі «Дія»

Відмінності від MySQL

UPSERT — INSERT … ON CONFLICT … DO UPDATE (не ON DUPLICATE KEY).

JSON/JSONB поле — допоміжний SELECT з операторами -> / ->> за JSON-шляхом.

Схеми — list_schemas + list_tables з урахуванням options.schema.

Функція — SELECT fn($1, $2) замість stored procedure MySQL.

INSERT/UPDATE можуть повертати рядок через RETURNING у змінну результату.

Змінні після блоку

  • resultVariable — JSON-масив рядків або документів (якщо задано в блоці)
  • resultVariable_count — кількість записів
  • resultVariable_first — перший рядок/документ (зручно для find_one)
  • db_last_error — текст помилки на гілці «Помилка»

Приклад сценарію

Після оплати в боті — блок PostgreSQL insert у таблицю leads (email, source, paid_at) з {email} і {payment_id}; RETURNING id → змінна lead_id → повідомлення «Дякуємо, заявка №{lead_id}».