Robin Keech <robin(at)dialogue(dot)co(dot)uk> writes:
> ... Only some fields are written to each time the row is updated.
> There is one field called 'count' that ONLY needs to increment every
> time that particular row AND the field 'count' are updated.
> I know that I can select the information, increment it and update it
> back again, but is there any way of setting up the database to do this
> automatically? I am using PostgreSQL 6.5.
Sure, use a trigger. Here's one I use for a table that wants to attach
a globally new sequence number to each created or updated row:
CREATE FUNCTION my_phistory_trigger() RETURNS OPAQUE AS '
NEW.sequenceNo := nextval(''my_phistory_Seq'');
' LANGUAGE 'plpgsql';
CREATE TRIGGER my_phistory_trigger BEFORE INSERT OR UPDATE ON my_phistory
FOR EACH ROW EXECUTE PROCEDURE my_phistory_trigger();
but if you just want to increment the number that's there, you could do
NEW.sequenceNo := OLD.sequenceNo + 1;
(bearing in mind that this'll only work as an UPDATE trigger, not
INSERT). See the programmer's guide for doco on trigger functions.
regards, tom lane
In response to
pgsql-sql by date
|Next:||From: Kovacs Zoltan Sandor||Date: 2000-02-16 15:58:45|
|Subject: Re: [SQL] Re: BSC|
|Previous:||From: Vladimir Terziev||Date: 2000-02-16 14:06:12|
|Subject: Re: BSC|