Sì, e questo comportamento è predefinito. Qualsiasi violazione del vincolo univoco costituisce un conflitto e quindi il UPDATE
viene eseguito se ON CONFLICT DO UPDATE
è specificato. Il INSERT
l'istruzione può avere un solo ON CONFLICT
clausola, ma il conflict_target
di tale clausola può specificare più nomi di colonna, ognuno dei quali deve avere un indice, come un UNIQUE
vincolo. Tuttavia, sei limitato a una singola conflict_action
e non avrai informazioni su quale vincolo ha causato il conflitto durante l'elaborazione di tale azione. Se hai bisogno di quel tipo di informazioni, o di un'azione specifica a seconda della violazione del vincolo, dovresti scrivere una funzione trigger ma poi perdi l'importantissima atomicità di INSERT ... ON CONFLICT DO ...
dichiarazione.