Thread: function return value inside a trigger function
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
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.
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
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:Works for me ...
> does anybody knows how can I have something like:
> select function_that_returns_int(NEW.field1) into NEW.field2;
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