Обсуждение: How to catch the id in a INSERT INTO ... RETURNING function?
Hi.
I have a table foo(id serial primary key, b int); and I want an insert function
create or replace function insert_to_foo(bvalue integer) returns integer as
declare
newindex integer;
begin
... insert into foo (a,b) values (default,bvalue) returning id
.... <---- THIS LINE
-- do more with newindex here
return newindex;
end;
Well, the problem is that I want the id of the new post to be saved
into the newindex variable for further actions. But how do I catch the
value into the variable?
Should I do:
select id from insert into foo (a,b) values (default,bvalue) returning id;
?
2009/2/1, A B <gentosaker@gmail.com>: > Hi. > I have a table foo(id serial primary key, b int); and I want an insert > function > > create or replace function insert_to_foo(bvalue integer) returns integer as > declare > newindex integer; > begin > ... insert into foo (a,b) values (default,bvalue) returning id > .... <---- THIS LINE > -- do more with newindex here > return newindex; > end; > > > Well, the problem is that I want the id of the new post to be saved > into the newindex variable for further actions. But how do I catch the > value into the variable? > Should I do: > > select id from insert into foo (a,b) values (default,bvalue) returning id; > ? > Try: INSERT ... RETURNING expressions INTO [STRICT] target; 38.5.3. Executing a Query with a Single-Row Result http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html Osvaldo
On Sun, Feb 01, 2009 at 11:37:52AM +0100, A B wrote: > Hi. > I have a table foo(id serial primary key, b int); and I want an insert function > > create or replace function insert_to_foo(bvalue integer) returns integer as > declare > newindex integer; > begin > ... insert into foo (a,b) values (default,bvalue) returning id > .... <---- THIS LINE > -- do more with newindex here INSERT INTO foo (a, b) VALUES (DEFAULT, bvalue) RETURNING id INTO newindex; > return newindex; > end; > > > Well, the problem is that I want the id of the new post to be saved > into the newindex variable for further actions. But how do I catch the > value into the variable? > Should I do: > > select id from insert into foo (a,b) values (default,bvalue) returning id; > ? See in the manual: http://www.postgresql.org/docs/8.3/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW Regards, Gerhard