Re: Last value inserted

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Last value inserted
Дата
Msg-id 20041116073922.D69632@megazone.bigpanda.com
обсуждение исходный текст
Ответ на Re: Last value inserted  (Jeff Eckermann <jeff_eckermann@yahoo.com>)
Список pgsql-general
On Tue, 16 Nov 2004, Jeff Eckermann wrote:

> --- Jerry III <jerryiii@hotmail.com> wrote:
>
> > Which means that sometimes they do not return the
> > correct value - if you
> > have a trigger that inserts another record you will
> > not get the right value.
>
> If you are new to PostgreSQL, as you say, then why are
> you so sure of this?  Perhaps you may profit from
> looking a little more at how currval() works.

He's correct.  One thing that currval will not help with is a
case where more than one row has been inserted by a statement
(whether due to the base statement or triggers).

A somewhat absurd example:

---

create table q1(a serial, b int);

create function f1() returns trigger as 'begin if (random() >
0.5) then insert into q1 default values; end if; return NEW; end;'
language 'plpgsql';

create trigger q1_f1 after insert on q1 for each row execute
procedure f1();

insert into q1(b) values (3);

select currval('q1_a_seq');

select * from q1;

----

I got a currval of 3 which was the last row inserted, but that was from
the trigger, not the row created by my insert so it didn't have the
correct b value.

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

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: How to deal with almost recurring data?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Last value inserted