Re: [GENERAL] sequence used on null value or get the max value fora column whith concurrency

Поиск
Список
Период
Сортировка
От rob stone
Тема Re: [GENERAL] sequence used on null value or get the max value fora column whith concurrency
Дата
Msg-id 1502460340.5731.1.camel@gmail.com
обсуждение исходный текст
Ответ на [GENERAL] sequence used on null value or get the max value for a column whithconcurrency  (marcelo <marcelo.nicolet@gmail.com>)
Список pgsql-general

On Thu, 2017-08-10 at 19:05 -0300, marcelo wrote:
> In some table, I have a bigint column which at the app level can be 
> null. Call it "DocumentNumber", and of course is not the PK.
> In most cases, the applications give some value to the column.
>
> But sometimes, the value remains null, expecting the backend or
> someone 
> assign it a unique value.
>
> Could I use a sequence only when the field arrives to the backend as 
> null? How? Using a triger?
>
> Alternatively:
>
> How could I get the max value for the column and increment it by
> one, 
> but with concurrency warranty? Something as a table lock?
>
> TIA
>
>
>
>
>


Hello Marcelo,

I haven't tested this but if you define the column thus:-

document_number bigint default
nextval('my_document_number_sequence'::regclass)

then on insert, if that column is not in the values list, then the next
available number from the sequence will be used.

Remember, that if a rollback occurs, the sequence number is lost
forever.

HTH,
Robert


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

Предыдущее
От: Fabiana Zioti
Дата:
Сообщение: [GENERAL] Receive a string in Composite-type Arguments
Следующее
От: Murtuza Zabuawala
Дата:
Сообщение: [GENERAL] Fwd: 2 process postgres -D for one instance