Существует ли существующая реализация обратного «AUTO_INCREMENT» в PostgreSQL или MySQL? - PullRequest
4 голосов
/ 21 января 2012

Без необходимости делать это вручную (что я открыт для реализации, если нет других опций), есть ли способ в PostgreSQL или MySQL иметь автоматический счетчик / поле, которое уменьшается вместо приращений ?

По разным причинам в текущем приложении было бы неплохо узнать, сколько еще записей (с точки зрения типа данных) еще может бытьдобавить в таблицу, просто взглянув на самую последнюю добавленную запись, а не вычтя самый последний идентификатор из максимума для типа данных.

Итак, есть ли "AUTO_DECREMENT" или аналогичный длялюбая система?

1 Ответ

6 голосов
/ 21 января 2012

Вы должны выполнить небольшую ручную настройку в PostgreSQL, но вы можете настроить последовательность следующим образом:

create sequence example_seq
 increment by -1
 minvalue 1
 maxvalue 5
 start with 5;

create table example(
example_id int primary key default nextval('example_seq'),
data text not null
);

alter sequence example_seq owned by example.example_id;

Полагаю, было бы эквивалентно создать таблицу со столбцом serial, а затемизмените автоматически сгенерированную последовательность.

Теперь, если я вставлю несколько строк, я получу example_id с обратным отсчетом от 5. Если я попытаюсь вставить более 5 строк, я получу nextval: reached minimum value of sequence "example_seq" (1)

...