Re: MODIFICAR MASIVAMENTE UN CAMPO

From: Marcos Ortiz <mlortiz(at)uci(dot)cu>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: MODIFICAR MASIVAMENTE UN CAMPO
Date: 2011-04-29 15:08:53
Message-ID: 4DBAD485.8010305@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 4/29/2011 10:12 AM, Marcelo Robin escribió:
> Hola a todos. Tengo un campo en una tabla que en este momento almacena
> datos de tipo NUMERIC.
> Debería modificarlos masivamente a todos los registros que ya tengo
> almacenados. Esta modificación consiste en colocar una serie
> arrancando desde el nro 100 en adelante pero ordenados segun un
> criterio...
> Es decir en el primer registro de la tabla debería ir el 100, en el
> segundo el 101 y así sucesivamente...
> Hasta el momento lo hacía externamente haciendo una rutina en vb.net
> <http://vb.net> y los modificaba cambiando los parametros.
> Quería saber si pudiera crear una VISTA dentro de la tabla en cuestión
> para que al ejecutarla, automáticamente haga estos cambios... y cómo
> tendría que arrancar a diseñar esta VISTA... cómo sería el código...
> Desde ya muchas gracias
>
> Marcelo
Mi consejo es que hagas una función que te haga eso, no una vista.
Las vistas no son usadas para ello, mas bien se usan para encapsular los
detalles de la estructura de tus tablas y para ejecutar consultas que
generalmente ejecutas en tu base de datos.

El código como tal depende de tu aplicación, pero es más o menos es
igual. Acá te dejo un ejemplo de una función que usé para modificar dos
registros en una tabla

CREATE OR REPLACE FUNCTION modificar_letra_tbreport() RETURNS VOID AS
$$
DECLARE
-- Declaracion de las variables a usar
v_row record;
v_template text;
v_xmlreport text;
v_local text;
v_local2 text;
BEGIN
SET search_path = 'mod_recuperaciones';
-- Obtencion de todos los reportes

FOR v_row IN SELECT * FROM tbreport
LOOP
-- Obtencion de las variables a modificar
v_template := v_row.template;
v_xmlreport := v_row.xmlreport;
-- Reemplazo de arial por DejaVu Sans
v_local := regexp_replace(v_template,'arial','DejaVu Sans');
v_local2 := regexp_replace(v_xmlreport,'arial','DejaVu Sans');
-- Actualizacion de las filas
UPDATE tbreport
SET template = v_local,
xmlreport = v_local2
WHERE idreport = v_row.idreport;
END LOOP;
END
$$
LANGUAGE plpgsql;

Podrías seguir la lógica y adaptarla a tus necesidades.
Saludos

--
Marcos Luís Ortíz Valmaseda
Software Engineer
Linux User # 418229

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Lazaro Rubén García Martinez 2011-04-29 15:54:13 RE: [pgsql-es-ayuda] cast de campo fecha en función
Previous Message Alvaro Herrera 2011-04-29 14:32:23 Re: