Aktualizowanie wierszy bazy danych bez blokowania tabeli w PostgreSQL 9.2

Próbuję uruchomić instrukcję aktualizacji w ten sposób na stole, używając PostgreSQL 9.2:

UPDATE table
    SET a_col = array[col];

Musimy być w stanie uruchomić to w ~ 10M tabeli wierszy, a nie zablokować tabeli (więc normalne operacje mogą się nadal odbywać, gdy aktualizacja jest uruchomiona). Wierzę, że użycie kursora będzie prawdopodobnie właściwym rozwiązaniem, ale naprawdę nie mam pojęcia, czy to jest, ani jak powinienem je implementować za pomocą kursora.

Wymyśliłem ten kod kursora, który moim zdaniem może być dobry.

Edytuj: Dodano funkcję kursora

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