func-trigger-after-update.sql 463 Bytes
CREATE OR REPLACE FUNCTION log_table_after_update() RETURNS trigger LANGUAGE plpgsql AS $$
DECLARE
    v_old json;
    v_new json;
BEGIN
    v_old = rec_to_json(TG_TABLE_SCHEMA, TG_TABLE_NAME, hstore(OLD));
    v_new = rec_to_json(TG_TABLE_SCHEMA, TG_TABLE_NAME, hstore(NEW));

    INSERT INTO log_table (table_schema, table_name, operation, old_values, new_values)
        VALUES (TG_TABLE_SCHEMA, TG_TABLE_NAME, 'update', v_old, v_new);

    RETURN NEW;
END
$$