BUG #7924: Trigger update function don't take correct values - Mailing list pgsql-bugs

From mv.gonzalez@cir.es
Subject BUG #7924: Trigger update function don't take correct values
Date
Msg-id E1UDvch-0004Qr-4C@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #7924: Trigger update function don't take correct values  (Kevin Grittner <kgrittn@ymail.com>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      7924
Logged by:          Maria
Email address:      mv.gonzalez@cir.es
PostgreSQL version: Unsupported/Unknown
Operating system:   RedHat
Description:        =


Hi!

I have a trigger that when you update a value on a table, makes an insert
into another table.

The trigger looks like the following:

BEGIN
set datestyle to 'sql';
set datestyle to 'european';
IF (TG_OP =3D 'UPDATE' and (OLD.situation!=3DNEW.situation)) THEN
INSERT INTO table_B VALUES (OLD.id,NEW.situation,NOW());
END IF;
RETURN NULL;
END;

For exemple, If I do the next querys:
--> update table_A set situation=3D'Started' where id=3D'23';
On table_A appears:
  id    | situation =

--------+-----------
  23    | Started

On table_B appears:
  id    | situation | when
--------+-----------+---------------------
  23    | Started   | 2013-03-08 12:33:35


--> update table_A set situation=3D'Waiting' where id=3D'23';
On table_A appears:
  id    | situation =

--------+-----------
  23    | Waiting

On table_B appears:
  id    | situation | when
--------+-----------+---------------------
  23    | Started   | 2013-03-08 12:33:35
  23    | Started   | 2013-03-08 12:33:37

I don't understand why after the second update, the insert done on table_B
is incorrect, and has the same values that the first one. =


I've been looking for some kind of explanation like cache or something, but
I couldn't find anything.

Thanks in advance.

Maria

pgsql-bugs by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: 8.4: COPY continues after client disconnects
Next
From: Kevin Grittner
Date:
Subject: Re: BUG #7924: Trigger update function don't take correct values