Да, и това поведение е по подразбиране. Всяко нарушение на уникалното ограничение представлява конфликт и след това UPDATE
се изпълнява, ако ON CONFLICT DO UPDATE
е посочено. INSERT
изразът може да има само един ON CONFLICT
клауза, но conflict_target
на тази клауза може да посочи няколко имена на колони, всяка от които трябва да има индекс, като например UNIQUE
ограничение. Вие обаче сте ограничени до едно conflict_action
и няма да имате информация кое ограничение е причинило конфликта при обработката на това действие. Ако имате нужда от такъв вид информация или специфично действие в зависимост от нарушението на ограничението, трябва да напишете тригерна функция, но тогава губите изключително важната атомарност на INSERT ... ON CONFLICT DO ...
изявление.