Обновление строк базы данных без блокировки таблицы в PostgreSQL 9.2

Попытка выполнить оператор обновления, подобный этому, для таблицы, используя PostgreSQL 9.2:

UPDATE table
    SET a_col = array[col];

Мы должны иметь возможность выполнить это на ~ 10M таблице строк, и при этом она не должна блокировать таблицу (чтобы обычные операции все еще могли происходить во время выполнения обновления). Я полагаю, что использование курсора, вероятно, будет правильным решением, но я действительно понятия не имею, если это так или как я должен реализовать его с помощью курсора.

Я придумал этот код курсора, который, я думаю, может быть хорошим.

Редактировать: Добавлена функция курсора

CREATE OR REPLACE FUNCTION update_fields() RETURNS VOID AS $$
DECLARE
        cursor CURSOR FOR SELECT * FROM table ORDER BY id FOR UPDATE;
BEGIN
        FOR row IN cursor LOOP
                UPDATE table SET
                        a_col = array[col],
                        a_col2= array[col2]
                WHERE CURRENT OF cursor;
        END LOOP;
END;
$$ LANGUAGE plpgsql;

Ответы на вопрос(1)

Ваш ответ на вопрос