http://www.postgresql.org/docs/9.0/static /sql-createtable.html in section "Non-deferred Uniqueness Constraints" - "Gdy ograniczenia UNIQUE lub PRIMARY KEY nie można odroczyć, PostgreSQL sprawdza unikalność natychmiast po wstawieniu lub zmodyfikowaniu wiersza."
Zmiana unikalnego ograniczenia na odroczone wstrzyma sprawdzanie do końca aktualizacji. Użyj opcji SET CONSTRAINTS, aby wyłączyć na poziomie sesji (co jest denerwująco powtarzalne) lub usuń i ponownie utwórz ograniczenie unikalności za pomocą opcji deferrable (nie znam konstrukcji ALTER, która mogłaby to zrobić bez usuwania).