Re: pg_dump and DEFAULT column values

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: pg_dump and DEFAULT column values
Дата
Msg-id 6482.1005166110@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: pg_dump and DEFAULT column values  ("Eric Ridge" <ebr@tcdi.com>)
Список pgsql-general
"Eric Ridge" <ebr@tcdi.com> writes:
>> a sequence it is!  thanks.

> well, but then again, I want the default value of that field to be 1
> greater than the max value, not the next value in a sequence.
> The client application has the ability to change the value of that
> field, but new records need to be max+1.

Hmm.  I think you should think hard about why you believe that the
default has to work that way and you can't just use a sequence.
You're paying a high price to conform to what seems a very questionable
set of assumptions.

> So I guess to make pg_dump happy, and to solve potential concurrency
> issues, I need a trigger for that field?  Or will I have the same
> circular reference problem with a trigger?

The circular reference problem arises because SQL-language functions
are parsed and checked at CREATE FUNCTION time.  A cheezy way to get
around it is to define the function before the table, but write it in
a PL language --- presently, at least, PL function definitions are not
checked until first use.  So you could do

    create function get_the_max() ... language 'plpgsql';

    create table ... default get_the_max()

and it should work and also dump correctly.

            regards, tom lane

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

Предыдущее
От: Vivek Khera
Дата:
Сообщение: constraint surgery
Следующее
От: "Eric Ridge"
Дата:
Сообщение: Re: pg_dump and DEFAULT column values