Verschieben (Aktualisieren) eindeutiger Spaltenwerte in PostgreSQL

it MS SQL Server funktioniert Folgendes einwandfrei:

CREATE TABLE #temptable(mykey int primary key)

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

UPDATE #temptable SET mykey=mykey+1

Unter Verwendung von PostgreSQL schlägt jedoch Folgendes fehl:

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

FEHLER: doppelter Schlüsselwert verletzt eindeutige Bedingung "tbl_test_pkey" DETAIL: Schlüssel (testkey) = (2) ist bereits vorhanden.

Ich muss jeden Wert einer Spalte in einer Tabelle inkrementieren, was Teil einer zusammengesetzten eindeutigen Einschränkung ist. Wie kann ich das in einer Anweisung tun?

Vielen Dank

Bearbeiten: Wenn Sie sich fragen, warum dies (zumindest für mich) Sinn macht, ist hier ein vollständigeres Szenario.

Ich habe eine Tabelle mit Elementen, die in Kategorien unterteilt sind. Jeder Artikel hat eine bestimmte Position in der Kategorie.

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

Diese Tabelle enthält Daten wie:

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

Beachten Sie, dass (foo4, bar4) in Kategorie 2 vor (foo3, bar3) steht. Wenn ich nun Elemente in einer Kategorie neu anordnen möchte, muss category_position aktualisiert werden. Aufgrund der PK kann ich jedoch mit PostgreSQL keine Werte verschieben, wie dies mit SQL Server möglich ist.