В PostgreSQL нет функции автоматического увеличения?

#database #postgresql

#База данных #postgresql

Вопрос:

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

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

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

Ответ №1:

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

Например:-

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

Это создаст идентификатор пользователя в качестве индексируемого первичного ключа с автоматическим увеличением.
Если вы не хотите использовать это в качестве первичного ключа, просто удалите PRIMARY KEY.

Ответ №2:

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

Ответ №3:

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

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

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

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

Комментарии:

1. Спасибо, я впервые с postgre 🙂