Thread: function return value inside a trigger function

function return value inside a trigger function

From
joao viegas
Date:
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

Re: function return value inside a trigger function

From
Bosco Rama
Date:
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.


Re: function return value inside a trigger function

From
Tom Lane
Date:
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


Re: function return value inside a trigger function

From
"joao tiago a. m. viegas"
Date:
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:
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