Re: sequence values question

Поиск
Список
Период
Сортировка
От Franco Bruno Borghesi
Тема Re: sequence values question
Дата
Msg-id e13c14ec05051013077a507d54@mail.gmail.com
обсуждение исходный текст
Ответ на sequence values question  (mmiranda@americatel.com.sv)
Список pgsql-general
just obtain the next value from the sequence first, then do the insert:

CREATE OR REPLACE FUNCTION insert_row(text) returns text language plpgsql
AS $$
DECLARE
  vdesc alias for $1;
  new_id INTEGER;
BEGIN
        SELECT nextval('sequence_name_here') INTO new_id;
        INSERT INTO productos (id, desc) VALUES (new_id, vdesc);
        RETURN (new_id) || ',' || vdesc;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;



2005/5/10, mmiranda@americatel.com.sv <mmiranda@americatel.com.sv>:
Hi, how can i know the values generated by a column of type serial?
I mean, i have the following table

productos
(
  id serial,
  desc varchar(50)
)

select * from productos;

+-----+------------+
| id  | desc       |
+-----+------------+
|   1 | ecard1     |
|   2 | ecard2     |
|   3 | ecard3     |
|   4 | ecard4     |
|   5 | ecard5     |
+-----+------------+

I insert a row using a SP, i want to return the id and desc of the new
product in the table.
this is an example of the hypothetical SP

CREATE OR REPLACE FUNCTION insert_row(text) returns text language plpgsql
AS $$
DECLARE
  vdesc alias for $1;
BEGIN
        INSERT INTO productos (desc) VALUES (vdesc);
        RETURN (new id ???) || ',' || vdesc;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

I know i can get the last value using currval(text), and add 1 to the next
values, is this the only way?, what if i want to insert several products?,
should i  return a record ?
thanks

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

В списке pgsql-general по дате отправления:

Предыдущее
От: Christopher Murtagh
Дата:
Сообщение: Re: Trigger that spawns forked process
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Trigger that spawns forked process