Когда из API прилетает массив объектов, не обязательно разбирать его в коде и делать много отдельных
INSERT или UPDATE. PostgreSQL умеет превратить JSON-массив в обычную табличную выборку.SELECT *
FROM jsonb_to_recordset($1::jsonb)
AS x(id bigint, amount numeric);
На вход можно передать
JSON вида [{"id":1,"amount":500},{"id":2,"amount":900}], а на выходе получить нормальные типизированные строки.INSERT INTO payments (id, amount)
SELECT id, amount
FROM jsonb_to_recordset($1::jsonb)
AS x(id bigint, amount numeric);
Это особенно удобно для пакетных загрузок, импорта данных, обработки вебхуков и синхронизации с внешними сервисами.
UPDATE payments p
SET amount = x.amount
FROM jsonb_to_recordset($1::jsonb)
AS x(id bigint, amount numeric)
WHERE p.id = x.id;
Главный плюс в том, что приложение передаёт один JSON-параметр, а вся пакетная обработка происходит внутри базы одним запросом.
🔥 Такой приём убирает циклы в коде, уменьшает количество запросов к базе и делает массовые операции намного чище.
➡️ SQL Ready | #совет
