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
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 |