Gli indici univoci vengono valutati per riga e non per istruzione (che è, ad esempio, diverso dall'implementazione di Oracle)
La soluzione a questo problema consiste nell'utilizzare un vincolo univoco che può essere differito e quindi valutato al termine dell'operazione.
Quindi invece dell'indice univoco, definire un vincolo:
alter table test add constraint test_idx_pos unique (pos)
deferrable initially deferred;