Что такое UPSERT (INSERT ... ON CONFLICT)?

Ответ

Вставка с обработкой конфликта по ключу: при конфликте - обновление (или игнор). В PostgreSQL: INSERT ... ON CONFLICT (column) DO UPDATE SET ... или DO NOTHING.

INSERT INTO users (id, email, name) VALUES (1, 'a@b.com', 'A')
ON CONFLICT (id) DO UPDATE SET email = EXCLUDED.email, name = EXCLUDED.name;

В MySQL аналог: INSERT ... ON DUPLICATE KEY UPDATE. Удобно для идемпотентной синхронизации.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.