Re: Adicionando nuevas columnas en production

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: "Carlos T(dot) Groero Carmona" <ctonetg(at)gmail(dot)com>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Adicionando nuevas columnas en production
Date: 2019-04-05 18:32:24
Message-ID: 20190405183224.GA5853@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Carlos T. Groero Carmona escribió:

> CREATE OR REPLACE FUNCTION addingcolumns7() RETURNS integer AS $$
> DECLARE
> i INTEGER := 0;
> flag boolean := true;
> BEGIN
> while flag LOOP
> UPDATE customers
> set colum_1 = false,
> colum_1 = false,
> colum_1 = false
> WHERE id%10007 = i ;
> i:=i+1;
> if i = 10007 then
> flag := false;
> end if;
> END LOOP;
> RETURN i;
> END;
> $$ LANGUAGE plpgsql

Esto actualiza toda la tabla en una sola transacción, que niega todos
los beneficios de la idea que te sugerí. Bien podrías hacer un único
update que modifique todos los registros ... sería lo mismo.

Lo que yo sugiero es que cada update tiene que ir en su propia
transacción. Por lo tanto el ciclo no puede hacerse en plpgsql (a menos
que estés usando postgres 11, donde podrías poner un COMMIT al terminar
cada ciclo).

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos T. Groero Carmona 2019-04-05 21:09:13 Re: Adicionando nuevas columnas en production
Previous Message Carlos T. Groero Carmona 2019-04-05 18:13:01 Re: Adicionando nuevas columnas en production