Mudar (atualizar) valores únicos da coluna no PostgreSQL

Usando o MS SQL Server, o seguinte funciona bem:

CREATE TABLE #temptable(mykey int primary key)

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

UPDATE #temptable SET mykey=mykey+1

No entanto, usando o PostgreSQL, o seguinte falha:

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

ERRO: o valor duplicado da chave viola a restrição exclusiva "tbl_test_pkey" DETALHE: A chave (testkey) = (2) já existe.

Eu preciso incrementar cada valor de uma coluna em uma tabela, que faz parte de uma restrição exclusiva composta. Como posso fazer isso em uma declaração?

Obrigado !

Edit: Se você está se perguntando por que isso faz sentido (pelo menos para mim), aqui está um cenário mais completo.

Eu tenho uma tabela de itens organizados em categorias. Cada item tem uma posição específica na categoria.

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 tabela contém dados como:

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

Observe que (foo4, bar4) vem antes (foo3, bar3) na categoria2. Agora, se eu quiser reordenar itens em uma categoria, preciso atualizar category_position ... Mas, devido à PK, não posso mudar os valores usando o PostgreSQL como poderia com o SQL Server.

questionAnswers(2)

yourAnswerToTheQuestion