Реализация счетчика.

Есть таблица которую видят пользователи. Они видят только определенные поля. могут добавлять записи в таблицу.
Там есть одно поле являющееся PrimaryKey. Необходимо сделать так чтобы при добавлении пользователями записи в таблицу. Это поле получало значение на 1 больше чем максимальное значение в этом поле таблицы. Необходим своего рода счетчик.
Я могу сделать поиск максимального числа в этом поле и потом прибавив 1 внести его в поле следующей новой азписи таблицы. Но это громоздко.
Есть ли какие нибудь встроенные средства PgSQL для подобных полей, постоянно увеличивающих свое значение ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Об этом уже

Об этом уже давно подумали.
Смотри тип SERIAL в документации.
Вкратце - это тоже INTEGER только с автоинкрементом
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

Странно но на

Странно но на команду alter table ticket_board
alter column num_ticket type serial;

Ругается говорит не существует такого типа, если конечно я все правильно делаю.

вот его ругань: ERROR: type "serial" does not exist

Тип SERIAL на

Тип SERIAL на самом деле является псевдотипом и реализуется через CREATE SEQUENCE.
Видимо поэтому у тебя и не работает.
Поэтому ищи в доках про CREATE SEQUENCE и всё связанное с этим.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

странно

странно конечно.... в доках просто пример приводился - и строчка была написана как раз так как у меня.

Ага? Тогда это

Ага?
Тогда это хороший повод написат баг-репорт! Пусть хотя бы доку исправят!
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023