#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 🙂