Сдвиг (обновление) уникальных значений столбцов в PostgreSQL

Используя MS SQL Server, работает нормально:

CREATE TABLE #temptable(mykey int primary key)

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

UPDATE #temptable SET mykey=mykey+1

Однако при использовании PostgreSQL происходит следующее:

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

ОШИБКА: двойное значение ключа нарушает уникальное ограничение "tbl_test_pkey". ПОДРОБНЕЕ: Ключ (testkey) = (2) уже существует.

Мне нужно увеличивать каждое значение одного столбца в одной таблице, которая является частью составного уникального ограничения. Как я могу сделать это в одном утверждении?

Спасибо !

Изменить: Если вам интересно, почему это имеет смысл (по крайней мере для меня), вот более полный сценарий.

У меня есть одна таблица предметов, организованных по категориям. Каждый элемент имеет определенную позицию в категории.

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

Эта таблица содержит данные как:

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

Обратите внимание, что (foo4, bar4) предшествует (foo3, bar3) в категории 2. Теперь, если я хочу переупорядочить элементы в одной категории, мне нужно обновить category_position ... Но из-за PK я не могу сдвигать значения с помощью PostgreSQL, как с SQL Server.