Tak, i to zachowanie jest domyślne. Każde naruszenie unikalnego ograniczenia stanowi konflikt, a następnie UPDATE
jest wykonywane, jeśli ON CONFLICT DO UPDATE
jest specyficzne. INSERT
instrukcja może mieć tylko jeden ON CONFLICT
klauzula, ale conflict_target
tej klauzuli może określać wiele nazw kolumn, z których każda musi mieć indeks, na przykład UNIQUE
ograniczenie. Jesteś jednak ograniczony do jednego conflict_action
i nie będziesz mieć informacji o tym, które ograniczenie spowodowało konflikt podczas przetwarzania tej akcji. Jeśli potrzebujesz tego rodzaju informacji lub określonej akcji w zależności od naruszenia ograniczenia, powinieneś napisać funkcję wyzwalającą, ale wtedy stracisz bardzo ważną atomowość INSERT ... ON CONFLICT DO ...
oświadczenie.