Разница между UPSERT и обычным INSERT в PostgreSQL заключается в том, что UPSERT позволяет одновременно обновлять существующие строки и вставлять новые. 5
При выполнении UPSERT база данных определяет, существует ли запись, на основе условий конфликта, указанных в запросе. 1 В зависимости от этого она либо вставляет новую строку в таблицу, если запись ещё не существует, либо обновляет существующую строку новыми значениями. 1
Таким образом, UPSERT объединяет обе операции в один запрос, что упрощает логику запросов и уменьшает количество обращений к базе данных. 1
Для использования UPSERT в PostgreSQL используется оператор INSERT … ON CONFLICT, в котором указывается условие конфликта и действие на случай его возникновения (например, обновление). 12