UPSERT (INSERT ON CONFLICT)
Также: UPSERT, INSERT ON CONFLICT, ON CONFLICT DO UPDATE, upsert postgresql
UPSERT - SQL-операция, которая при вставке строки проверяет, существует ли запись с таким же ключом: если да - обновляет её, если нет - создаёт новую. В PostgreSQL реализована с версии 9.5 через синтаксис INSERT ... ON CONFLICT DO UPDATE. Это избавляет от ручной проверки наличия строки и гонки между SELECT и INSERT. Используется там, где нужно «создать или обновить» атомарно - счётчики, кеши, синхронизация данных.
Статьи с этим термином · 7
- Планы на H1 2023: PostgreSQL 15 в продакшн, дожимаем миграции, смотрим на LLM · 29 декабря 2022
- MERGE в PostgreSQL 15 beta: тестируем на реальных ETL-процессах · 4 августа 2022
- PostgreSQL 15 Beta 1: тестируем MERGE на реальных ETL-задачах · 31 мая 2022
- Мигрируем DWH с MS SQL Server 2008 на PostgreSQL 9.5: fdw_postgres и UPSERT как инструменты поэтапного перехода · 22 апреля 2016
- Apache Kafka 0.9 как шина событий: пробуем заменить ночной ETL на pub/sub · 18 марта 2016
- PostgreSQL 9.5 RLS в мультиарендной схеме: политики вместо application-фильтрации · 8 марта 2016
- PostgreSQL 9.5 в продакшне: переписываем ETL под UPSERT и смотрим на Row-Level Security · 8 января 2016