Atualizando linhas do banco de dados sem bloquear a tabela no PostgreSQL 9.2

Tentando executar uma instrução de atualização como essa em uma tabela, usando o PostgreSQL 9.2:

UPDATE table
    SET a_col = array[col];

Precisamos ser capazes de rodar isso em uma tabela de 10 milhões de linhas, e não bloqueá-lo (então as operações normais ainda podem acontecer enquanto a atualização estiver em execução). Eu acredito que usar um cursor provavelmente será a solução certa, mas eu realmente não tenho idéia se é ou como eu deveria implementá-lo usando um cursor.

Eu criei este código de cursor, que acho que pode ser bom.

Editar: Adicionado função do cursor

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;

questionAnswers(1)

yourAnswerToTheQuestion