(o cómo usar Tablas de Historia en PostgreSQL)
Si quieres guardar en algún lugar la historia completa de todas las
inserciones, modificaciones y eliminaciones de columnas en tus tablas
(para mantener una base de datos estilo wiki), no hay ninguna manera
directa de hacerlo... pero
aquí puedes ver
cómo hacerlo, en un artículo escrito por Thomas Liske.
Funciona con PostgreSQL, creando un trigger escrito en PL/Perl llamado
log_history() que añade una línea a una tabla llamada
history.<SCHEMA>_<TABLENAME> con un instante de tiempo
(hist_ts), la operación realizada (hist_op) y el contenido
de todas las columnas, cada vez que se ejecuta un INSERT, UPDATE o DELETE.
Esto realmente almacena toda la historia de las tablas en las que se use
este trigger.
Aquí puedes ver el trigger log_history,
y una función sencilla que activa el trigger en todas las tablas de un schema,
history_create_triggers.
Puedes llamar a esta función para el schema "public" usando SELECT history_create_triggers('public');
Estas dos funciones están escritas en PL/Perl y PL/pgSQL, respectivamente,
así que tendrás que añadir esos dos lenguajes a tu base de datos PostgreSQL,
si no lo has hecho ya, con CREATE LANGUAGE plperl; y
CREATE LANGUAGE plpgsql;