From: | Raúl Andrés Duque <raulandresduque(at)hotmail(dot)com> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | pg_dump |
Date: | 2006-11-27 14:04:36 |
Message-ID: | BAY135-DAV87121E5587E7094EE835DBAE60@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Cordial Saludo.
Tengo una duda sobre el pg_dump.
Cuando lo realizo y en ese momento estan transacciones en proceso ... qué
pasa?
1. Bloquea?
2. Evita actualizaciones mientras se jecuta?
3. pueden quedar transacciones parciales en el archivo generado?
Atentamente,
RAUL DUQUE
Bogotá, Colombia
----- Original Message -----
From: "Marcelino Guerrero" <mguerreroh(at)gmail(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, November 24, 2006 11:56 AM
Subject: [pgsql-es-ayuda] Despues de mucho batallar me salio el dicho log de
elimanados
Amigos,
Luego de mucho batallar me termine con el dicho log de registros eliminados,
lo adjunto por si alguno de Uds lo pudiera
necesitar y también si lo pudieran mejorar, aun hay un detalle que no me
gusta, pero no tengo otra, quizás mas adelante
me de mas tiempo y lo mejoro o alguno de Uds. lo puede hacer.
1.- Antes de eliminar cualquier registro o registros, necesito copiarlo a un
esquema eliminados, donde deberá de existir
una tabla con el mismo nombre de la tabla de donde se desea eliminar, pero
con el prefijo "log_".
2.- La estructura del archivo los es sencilla:
ord serial, para saber el orden.
seq int4, es una secuencia para saber donde empieza el registro y donde
termina
campo varchar, aquí se grabara el nombre del campo
contenido text, el contenido del campo.
usuario varchar, el usuario que elimino el registro
f_borrado timestamp, por defecto now()
3.- Los parámetros a enviar son:
- tabla, nombre de la tabla
- campo, que servirá para definir que registro o registros se eliminara
- valor del campo, el valor del anterior
- usuario, usuario que elimina el registro
- campo id del detalle, en caso que se elimine varios registros se deberá de
enviar un campo que identifique a cada uno
de los registros en forma individual, hay que indicar que este es el nombre
del campo mas no el valor, si fuera el caso
de que se elimine un registro de un maestro osea un solo registro, se podría
repetir el del "campo".
Saludos a todos y espero que esta función pueda ser de utilidad a alguna
persona de la lista, agradeceré si pudieran
comentarme si la perfeccionan, mejoran o le encuentran algún inconveniente.
Atte
Marcelino
CREATE OR REPLACE FUNCTION call_log("varchar", "varchar", "varchar",
"varchar","varchar")
RETURNS void AS
$BODY$
DECLARE
-- $1 tabla
-- $2 campo para el where
-- $3 valor del campo para el where
-- $4 usuario
-- $5 campo id del detalle
princip RECORD;
mviews RECORD;
xcant int4;
xcont int4;
valor_campo2 varchar;
nureg int2;
BEGIN
FOR princip IN execute 'select count(' || $2 || ') as cant from ' || $1
|| ' where ' || $2 || ' = ' ||
quote_literal($3) LOOP
xcant = princip.cant;
END LOOP;
xcont = 1;
nureg = 0;
WHILE xcont <= xcant LOOP
FOR princip IN execute 'select campo[' || xcont || '] from
(select array(select ' || $5 || ' from ' || $1 ||
' where '
|| $2 || ' = ' || quote_literal($3) || ')
as campo) as x' LOOP
valor_campo2 = princip.campo;
nureg = nureg + 1;
FOR mviews IN select atributo.attname as campo from
pg_attribute atributo, pg_class clase, pg_tables tablas
where atributo.attrelid=clase.relfilenode and
atributo.attstattarget = '-1' and
clase.relname=tablas.tablename and tablas.tablename = $1
order by atributo.attname LOOP
execute 'insert into eliminados.log_' || $1 || '
(seq,campo,contenido,usuario) values(' || nureg
|| ',' || quote_literal(mviews.campo)
|| ', (select ' || mviews.campo || ' from ' || $1 ||
' where ' || $2 || ' =' || quote_literal($3) ||
' and ' || $5 || ' = ' ||
quote_literal(princip.campo) || '),' || quote_literal($4) || ')';
END LOOP;
END LOOP;
xcont = xcont + 1;
END LOOP;
RETURN;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;
---------------------------(fin del mensaje)---------------------------
TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-11-27 14:15:29 | Re: numrow |
Previous Message | Miguel Bernilla Sánchez | 2006-11-27 14:03:26 | Re[2]: numrow |