ADG Оставить заявку

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. Используется там, где нужно «создать или обновить» атомарно - счётчики, кеши, синхронизация данных.