Re: Restart a sequence regularly

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Restart a sequence regularly
Дата
Msg-id 14910.1195669419@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Restart a sequence regularly  ("Scott Marlowe" <scott.marlowe@gmail.com>)
Ответы Re: Restart a sequence regularly
Список pgsql-general
"Scott Marlowe" <scott.marlowe@gmail.com> writes:
> Good point.  I'm guessing if you need a way to make other users wait,
> not get an error, you'll need to use a funtion with a security definer
> that will sleep or something during that period.

What you'd want is to take out an exclusive lock on the sequence.

[ fools around... ]  Hmm, we don't let you do LOCK TABLE on a sequence,
which is perhaps overly restrictive, but you can get the same effect
with any ALTER TABLE command that works on a sequence.  For instance
a no-op ALTER OWNER:

Session 1:

regression=# create sequence s;
CREATE SEQUENCE
regression=# begin;
BEGIN
regression=# alter table s owner to postgres;
ALTER TABLE

Session 2;

regression=# select nextval('s');
[ hangs ... ]

Session 1:

regression=# alter sequence s restart with 42;
ALTER SEQUENCE
regression=# commit;
COMMIT

Session 2:

 nextval
---------
      42
(1 row)


            regards, tom lane

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

Предыдущее
От: Reg Me Please
Дата:
Сообщение: Re: Table filter
Следующее
От: SHARMILA JOTHIRAJAH
Дата:
Сообщение: Re: Postgres table size