Re: trigger to access only the last transaction

From: Frank Pinto <frank(at)ayalo(dot)co>
To: Marcos Almeida Azevedo <marcos(dot)al(dot)azevedo(at)gmail(dot)com>
Cc: avpro avpro <avprowebeden(at)gmail(dot)com>, "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org>, pgsql-sql(at)postgresql(dot)org
Subject: Re: trigger to access only the last transaction
Date: 2015-03-09 07:46:46
Message-ID: CAATpuJrwNWnR97s1Ut5D61XbMRBmufBFCwAVn=QhEx7KHQpsyA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice pgsql-sql

On AFTER INSERT per row triggers you have a variable available called NEW
that should have an id. Try adding this to your WHERE clause:

AND table1.id = NEW.id

Note this is a join on a scalar value. NEW.id should be a number (e.g. 42)
when this is processed

Frank

On Mon, Mar 9, 2015 at 1:29 AM, Marcos Almeida Azevedo <
marcos(dot)al(dot)azevedo(at)gmail(dot)com> wrote:

>
>
> On Mon, Mar 9, 2015 at 6:01 AM, avpro avpro <avprowebeden(at)gmail(dot)com>
> wrote:
>
>> hi all,
>>
>> i have two tables with several columns:
>> table1
>> idtaskhistory
>> performedat
>> ...
>> idtask
>>
>> and
>>
>> table2
>> idtask,
>> manualdueat
>> .....
>>
>>
>> i created a trigger that does the following:
>>
>> CREATE TRIGGER del1
>> AFTER INSERT
>> ON table1
>> FOR EACH ROW
>> EXECUTE PROCEDURE taskdel;
>>
>> taskdel:
>> CREATE OR REPLACE FUNCTION taskdel()
>> RETURNS trigger AS
>> $BODY$begin
>> update table2
>> SET
>> manualdueat = null,
>> FROM table1,
>> where table1.idtask = table2.idtask;
>> return new;
>> END$BODY$
>> LANGUAGE plpgsql VOLATILE
>> COST 100;
>> ALTER FUNCTION taskdel()
>> OWNER TO user1;
>>
>> my idea was to have the info from column "manualdueat" deleted after the
>> table1 has been updated. the problem i face is that all columns from table2
>> will be deleted, not only my last entry where the insert has been done (I
>> was thinking that table1.idtask = table2.idtask will work, but isn't); my
>> question to you would be how to access only the last insert id in table1
>> and make this trigger working. or do you have another walk arround?
>>
>
> How about querying and order by primary key descending and get the first
> one?
>
>
>
>> I'm using psql 9.4 on a windows system
>>
>> thank you for your ideas,
>> John
>>
>
>
>
> --
> Marcos | I love PHP, Linux, and Java
> <http://javadevnotes.com/java-float-to-string-examples>
>

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message avpro avpro 2015-03-09 07:50:17 Re: trigger to access only the last transaction
Previous Message Marcos Almeida Azevedo 2015-03-09 07:29:17 Re: trigger to access only the last transaction

Browse pgsql-sql by date

  From Date Subject
Next Message avpro avpro 2015-03-09 07:50:17 Re: trigger to access only the last transaction
Previous Message Marcos Almeida Azevedo 2015-03-09 07:29:17 Re: trigger to access only the last transaction