Как мне указать, что столбец должен автоматически увеличиваться в pgAdmin?

14

Я начал изучать pgAdmin III для управления базой данных PostgreSQL. Но это было не простое в использовании приложение.

Если я создаю или создал таблицу с помощью pgAdmin III, как я могу добавить функцию "автоинкремента" в идентификатор столбца с типом integer?

Jonas
источник

Ответы:

17

два варианта: использовать SERIAL типа данных или создать последовательность и использовать эту последовательность в качестве значения по умолчанию для целого числа:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Фрэнк Хейкенс
источник
1
Этот ответ может быть обновлен, чтобы включить GENERATED BY DEFAULT AS IDENTITYвведенный с Postgres> = 10.
Madbreaks
15

Если вы хотите сделать это в PGAdmin, это гораздо проще, чем с помощью командной строки. В PostgreSQL, похоже, чтобы добавить автоинкремент к столбцу, сначала нужно создать последовательность автоинкремента и добавить ее в необходимый столбец. Мне так понравилось.

1) Во-первых, вам нужно убедиться, что для вашей таблицы есть первичный ключ. Также сохраните тип данных первичного ключа в bigint или smallint. (Я использовал bigint, не смог найти тип данных, называемый serial, как упоминалось в других ответах в другом месте)

2) Затем добавьте последовательность, щелкнув правой кнопкой мыши по последовательности -> добавить новую последовательность . Если в таблице нет данных, оставьте последовательность как есть, не вносите никаких изменений. Просто сохраните это. Если данные существуют, добавьте последнее или наибольшее значение в столбце первичного ключа на вкладку Текущее значение в определениях, как показано ниже. введите описание изображения здесь

3) Наконец, добавьте строку nextval('your_sequence_name'::regclass)к значению Default в вашем первичном ключе, как показано ниже.

введите описание изображения здесь Убедитесь, что имя последовательности здесь правильно. Это все, и автоматическое увеличение должно работать.

toing_toing
источник
4
Я не согласен по поводу "проще в PgAdmin". Вы думаете, что проходить клики проще, чем просто создавать столбцы SERIAL?
ypercubeᵀᴹ
1
Должен ли я сказать проще для тех, кто привык к GUI и если вы не знакомы с командной строкой. :)
toing_toing