Re: trigger question

From: Scott Shattuck <Scott(dot)Shattuck(at)planetcad(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: trigger question
Date: 2002-05-16 18:33:12
Message-ID: E9086EC3AC524A4AABE0B43F2DF3ABCBA513F2@pcadntexch01.planetcad.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

> -----Original Message-----
> From: Larry Rosenman [mailto:ler(at)lerctr(dot)org]
> Sent: Thursday, May 16, 2002 11:51 AM
> To: josh(at)agliodbs(dot)com
> Cc: pgsql-sql(at)postgresql(dot)org
> Subject: Re: [SQL] trigger question
>
>
> On Thu, 2002-05-16 at 12:49, Josh Berkus wrote:
> > Larry,
> >
> > > Is there a way in PL/pgSQL to have a trigger look at the
> fields in a
> > > %ROWTYPE variable to look for changes?
> > >
> > > I'm looking to be able to log the fields that are
> different between old
> > > and new in a trigger, but don't want to have to list
> each field (It
> > > changes, occasionally, but it changes). I'd also like to add a
> > > timestamp and flag field when I store the record in the
> log table.
> > >
> > > Am I just SOL, or is there a way to do this? (7.2.1, if
> it matters).
> >
> > I'm pretty sure there is a way to do what you want, and
> it's probably simpler
> > than you think.
> >
> > However, I need you to be more explicit, with examples. I
> can't quite figure
> > out what is is you're trying to do.
> >
>
> given the following table:
> CREATE TABLE "networks" (
> "netblock" cidr,
> "router" integer,
> "interface" character varying(256),
> "dest_ip" inet,
> "mis_token" character(16),
> "assigned_date" date,
> "assigned_by" character varying(256),
> "justification_now" integer,
> "justification_1yr" integer,
> "cust_asn" integer,
> "comments" character varying(2048),
> "other_reference" character varying(256),
> "parent_asn" integer,
> "status" integer NOT NULL,
> "purpose" integer,
> "last_update_by" character varying(256),
> "last_update_at" timestamp with time zone,
> "customer_reference" integer,
> "natblock" cidr
> );
>
> I want to log the changes to it in a trigger. Occasionally
> we add fields to it, so
> I'd like the trigger to know about them automatically. I
> need to log old/new for just the fields
> that change (and the netblock, which is the primary key).
>
> I realize I can build up the insert, but that seems to be the
> hard way.
>

It might not be what you're looking for but another possibility may be to
use a function to add columns to the table and have the function update the
trigger at that time. That would at least address the table/trigger
consistency issue.

ss

Scott Shattuck
Technical Pursuit Inc.

Browse pgsql-sql by date

  From Date Subject
Next Message Josh Berkus 2002-05-16 18:48:41 Constraint problem
Previous Message Josh Berkus 2002-05-16 18:05:48 Re: trigger question