function return value inside a trigger function

Started by joao tiago a. m. viegasover 13 years ago4 messagesgeneral
Jump to latest
#1joao tiago a. m. viegas
jtamviegas@yahoo.co.uk

Hello Good Evening all,

does anybody knows how can I have something like:
select function_that_returns_int(NEW.field1) into NEW.field2;

i.e., getting a function output and assign it to a variable inside the trigger.

in a trigger function?
I'm always getting:
ERROR: SELECT query has no destination for result data

thanks in advance
jtv

#2Bosco Rama
postgres@boscorama.com
In reply to: joao tiago a. m. viegas (#1)
Re: function return value inside a trigger function

On 09/26/12 17:56, joao viegas wrote:

does anybody knows how can I have something like:
select function_that_returns_int(NEW.field1) into NEW.field2;

I think you want:
select into NEW.field2 function_that_returns_int(NEW.field1);

or even:
NEW.field2 := function_that_returns_int(NEW.field1);

Bosco.

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: joao tiago a. m. viegas (#1)
Re: function return value inside a trigger function

joao viegas <jtamviegas@yahoo.co.uk> writes:

does anybody knows how can I have something like:
select function_that_returns_int(NEW.field1) into NEW.field2;

Works for me ...

create table fooey (q1 int, q2 int);

create function myt() returns trigger language plpgsql as $$
begin
select abs(new.q1) into new.q2;
return new;
end$$;

create trigger mytrig before insert on fooey for each row
execute procedure myt();

insert into fooey values(-42, 77);

select * from fooey;
q1 | q2
-----+----
-42 | 42
(1 row)

Perhaps you should show a full example of what you're doing.

regards, tom lane

#4joao tiago a. m. viegas
jtamviegas@yahoo.co.uk
In reply to: Tom Lane (#3)
Re: function return value inside a trigger function

sorry for the late update
thank you all,
I found the cause, that specific sentence was correct, it was in another
sentence of the same function, I think it was late at night and I was tired.

thank you anyway

best regards
jtv

On 27 September 2012 02:26, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Show quoted text

joao viegas <jtamviegas@yahoo.co.uk> writes:

does anybody knows how can I have something like:
select function_that_returns_int(NEW.field1) into NEW.field2;

Works for me ...

create table fooey (q1 int, q2 int);

create function myt() returns trigger language plpgsql as $$
begin
select abs(new.q1) into new.q2;
return new;
end$$;

create trigger mytrig before insert on fooey for each row
execute procedure myt();

insert into fooey values(-42, 77);

select * from fooey;
q1 | q2
-----+----
-42 | 42
(1 row)

Perhaps you should show a full example of what you're doing.

regards, tom lane