PostgreSQL Нет функции автоматического увеличения? - PullRequest
3 голосов
/ 28 апреля 2011

У меня есть тестовое приложение, написанное на Java для создания индексированных и неиндексированных таблиц в базах данных MySQL, PostgreSQL, Oracle и Firebird (помимо прочего).

Это просто случай, когда PostgreSQL не поддерживает функцию автоматического увеличения? Если нет, какова обычная процедура для индексированного столбца?

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 28 апреля 2011

Вы можете использовать SERIAL в PostgreSQL для генерации поля автоинкремента,

Например: -

CREATE TABLE user (
userid SERIAL PRIMARY KEY,
username VARCHAR(16) UNIQUE NOT NULL
)

Это создаст идентификатор пользователя как автоинкрементпервичный ключ проиндексирован.Если вы не хотите использовать его в качестве первичного ключа, просто удалите ПЕРВИЧНЫЙ КЛЮЧ.

3 голосов
/ 28 апреля 2011

С текущими Postgres вы можете просто использовать SERIAL для типа столбца.

В более старых версиях Postgres вы можете реализовать это с помощью SEQUENCE;соответствующая процедура:

CREATE SEQUENCE mytable_myid_seq;
ALTER TABLE mytable ALTER COLUMN myid SET DEFAULT NEXTVAL('mytable_myid_seq');

Хорошая статья на эту тему: MySQL против PostgreSQL: добавление столбца с автоинкрементом в таблицу

3 голосов
/ 28 апреля 2011

Используйте столбец типа SERIAL. Он работает так же, как AUTOINCREMEMT на некоторых других БД. (Проверьте документы для других функций, которые вы можете использовать с ним.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...