Средний
Что такое MERGE (UPSERT) в SQL?
MERGE (в PostgreSQL это INSERT ... ON CONFLICT) — это операция "Вставить или Обновить" (UPSERT).
Она решает проблему: мы хотим вставить строку, но если запись с таким ID уже существует, мы хотим обновить ее, а не получить ошибку уникальности.
Пример в PostgreSQL:
INSERT INTO users (id, name, login_count)
VALUES (1, 'Ivan', 1)
ON CONFLICT (id)
DO UPDATE SET login_count = users.login_count + 1;
✅ Зачем: Избавляет от необходимости делать два запроса (
SELECT для проверки существования, а затем INSERT или UPDATE), устраняя состояние гонки (Race Condition).