Actualizar filas de la base de datos sin bloquear la tabla en PostgreSQL 9.2

Intentando ejecutar una declaración de actualización como esta en una tabla, usando PostgreSQL 9.2:

UPDATE table
    SET a_col = array[col];

Necesitamos poder ejecutar esto en una tabla de filas de ~ 10M, y no tener que bloquear la tabla (por lo que las operaciones normales aún pueden ocurrir mientras se ejecuta la actualización). Creo que usar un cursor probablemente sea la solución correcta, pero realmente no tengo idea si es o cómo debo implementarlo usando un cursor.

He encontrado este código de cursor, que creo que podría ser bueno.

Edición: Función de cursor añadido

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;

Respuestas a la pregunta(1)

Su respuesta a la pregunta