ON CONFLICT в PostgreSQL — это необязательное предложение, которое задаёт действие, заменяющее возникновение ошибки при нарушении ограничения уникальности или ограничения-исключения. 2 Для каждой отдельной строки, предложенной для добавления, добавление либо выполняется успешно, либо, если нарушается решающее ограничение или индекс, выполняется альтернативное действие. 2
UPSERT в PostgreSQL — это функция, которая позволяет выполнять операцию INSERT, и если возникает конфликт (обычно на ограничение уникальности), то вместо этого обновляет конфликтую строку. 3
Таким образом, ON CONFLICT определяет, что делать при возникновении конфликта, а UPSERT позволяет обновлять существующие записи или вставлять новые в зависимости от того, возникает ли конфликт в указанном уникальном поле. 3