RE: Consulta Migrar a 9.1 SOLUCIONADO

From: "Mario Soto Cordones" <marioa(dot)soto(dot)cordones(at)gmail(dot)com>
To: "'Alvaro Herrera'" <alvherre(at)2ndquadrant(dot)com>
Cc: "'Jaime Casanova'" <jaime(at)2ndquadrant(dot)com>, 'Martín Marqués' <martin(dot)marques(at)gmail(dot)com>, "'Ayuda'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Consulta Migrar a 9.1 SOLUCIONADO
Date: 2013-04-15 15:38:49
Message-ID: 516c1110.adc7ec0a.1339.017d@mx.google.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Alvaro:

Esta es la función:

CREATE OR REPLACE FUNCTION audit.audit_table (
target_table pg_catalog.regclass,
audit_rows boolean,
audit_query_text boolean,
ignored_cols text []
)
RETURNS void AS
$body$
DECLARE
stm_targets text = 'INSERT OR UPDATE OR DELETE OR TRUNCATE';
_q_txt text;
_ignored_cols_snip text = '';
BEGIN
EXECUTE 'DROP TRIGGER IF EXISTS audit_trigger_row ON ' ||
quote_ident(target_table::text);
EXECUTE 'DROP TRIGGER IF EXISTS audit_trigger_stm ON ' ||
quote_ident(target_table::text);

IF audit_rows THEN
IF array_length(ignored_cols,1) > 0 THEN
_ignored_cols_snip = ', ' || quote_literal(ignored_cols);
END IF;
_q_txt = 'CREATE TRIGGER audit_trigger_row AFTER INSERT OR UPDATE OR
DELETE ON ' ||
quote_ident(target_table::text) ||
' FOR EACH ROW EXECUTE PROCEDURE audit.if_modified_func('
||
quote_literal(audit_query_text) || _ignored_cols_snip ||
');';
RAISE NOTICE '%',_q_txt;
EXECUTE _q_txt;
stm_targets = 'TRUNCATE';
ELSE
END IF;

_q_txt = 'CREATE TRIGGER audit_trigger_stm AFTER ' || stm_targets || '
ON ' ||
quote_ident(target_table::text) ||
' FOR EACH STATEMENT EXECUTE PROCEDURE
audit.if_modified_func('||
quote_literal(audit_query_text) || ');';
RAISE NOTICE '%',_q_txt;
EXECUTE _q_txt;

END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

COMMENT ON FUNCTION audit.audit_table(target_table pg_catalog.regclass,
audit_rows boolean, audit_query_text boolean, ignored_cols text [])
IS '
Add auditing support to a table.

Arguments:
target_table: Table name, schema qualified if not on search_path
audit_rows: Record each row change, or only audit at a statement level
audit_query_text: Record the text of the client query that triggered the
audit event?
ignored_cols: Columns to exclude from update diffs, ignore updates that
change only ignored cols.
';

Mario Soto Cordones

e-mail:mario(dot)alberto(dot)soto(dot)cordones(at)gmail(dot)com

Por favor antes de Imprimir éste correo, piense en los árboles de
nuestro planeta.

" Estamos tan acostumbrados a pedir felicidad, exito y fortuna, que nos
olvidamos de pedir lo mas importante: humildad, fortaleza, y sinceridad”.
(Autor Desconocido)

-----Mensaje original-----
De: Alvaro Herrera [mailto:alvherre(at)2ndquadrant(dot)com]
Enviado el: lunes, 15 de abril de 2013 10:35
Para: Mario Soto Cordones
CC: 'Jaime Casanova'; 'Martín Marqués'; 'Ayuda'
Asunto: Re: [pgsql-es-ayuda] Consulta Migrar a 9.1 SOLUCIONADO

Mario Soto Cordones escribió:
> Hola Jaime:
>
> Hice lo que me indicas:
>
> SELECT audit.audit_table('compras."eMarketing_dispor"'::regclass,
> 'true', 'true', '{version_col, changed_by, changed_timestamp}');
>
>
> Pero me indica el siguiente error:
>
>
> ERROR: relation ""eMarketing_dispor"" does not exist
> CONTEXT: SQL statement "DROP TRIGGER IF EXISTS audit_trigger_row ON
> """eMarketing_dispor""""
> PL/pgSQL function "audit_table" line 7 at EXECUTE statement

Eso podría pasar si el código de audit_table estuviera tratando de invocar
quote_identifier() dos veces ...

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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2013-04-15 16:04:52 Re: Consulta Migrar a 9.1 SOLUCIONADO -> FUNCION SOLUCIONADO
Previous Message Alvaro Herrera 2013-04-15 15:08:51 Re: Consulta Migrar a 9.1 SOLUCIONADO