Desplazar (actualizar) valores de columna únicos en PostgreSQL

Con MS SQL Server, lo siguiente funciona bien:

CREATE TABLE #temptable(mykey int primary key)

INSERT INTO #temptable VALUES (1)
INSERT INTO #temptable VALUES (2)

UPDATE #temptable SET mykey=mykey+1

Sin embargo, al usar PostgreSQL, falla lo siguiente:

CREATE TABLE pg_temp.tbl_test(testkey integer primary key)

INSERT INTO pg_temp.tbl_test VALUES (1)
INSERT INTO pg_temp.tbl_test VALUES (2)

UPDATE pg_temp.tbl_test SET testkey=testkey+1

ERROR: el valor de clave duplicada viola la restricción única "tbl_test_pkey" DETALLE: La clave (clave de prueba) = (2) ya existe.

Necesito incrementar cada valor de una columna en una tabla, que es parte de una restricción única compuesta. ¿Cómo puedo hacer esto en una declaración?

Gracias !

Editar: Si se pregunta por qué esto tiene sentido (al menos para mí), aquí hay un escenario más completo.

Tengo una tabla de artículos organizados en categorías. Cada artículo tiene una posición particular en la categoría.

category_id (PK) | category_position (PK) | item_attribute_1 | item_attribute_2
1 | 1 | foo | bar
1 | 2 | foo2 | bar2
2 | 1 | foo4 | bar4
2 | 2 | foo3 | bar3

Esta tabla contiene datos como:

category1 : (foo, bar), (foo2, bar2)
category2 : (foo4, bar4), (foo3, bar3)

Tenga en cuenta que (foo4, bar4) viene antes (foo3, bar3) en la categoría2. Ahora, si quiero reordenar elementos en una categoría, necesito actualizar category_position ... Pero debido a la PK, no puedo cambiar los valores usando PostgreSQL como podría con SQL Server.