Как добавить autoincrement для существующего поля в postgreSQL

Как добавить autoincrement для существующего поля в postgreSQL

Как добавить autoincrement для существующего поля в postgreSQL

Чем больше работаешь с данной СУБД, тем больше она тебя удивляет некоторыми нестандартными решениями задач и отсутствием документации. Возвращаемся к довольно таки насущному вопросу. Создали вы таблицу, затем хотите проставить или убрать autoincrement, что делать?

Что же, я полез сразу копать документацию и гугл. В итоге ничего дельного не нашлось. Кое-как через некоторые форумы и ответы, я сообразил что подобные вещи в PostgreSQL делаются спомощью последовательностей, зависимостей, называйте как угодно, на английском это звучит проще намного — SEQUENCE.

Примерное краткое описание действий следующее:

  1. Создать последовательность(зависимость)
  2. Прописать ее в свойство Default для колонки(поля)
  3. Указать что эта последовательность связана с нужным полем

В коде это все выглядит следующим образом:

Создаем последовательность, имя может быть произвольным, оно должно быть уникальным. Я предпочитаю название таблицы нижнее подчеркивание название поля нижнее подчеркивание seq.

CREATE SEQUENCE НАЗВАНИЕ_ПОСЛЕДОВАТЕЛЬНОСТИ;

Далее мы прописываем название данной последовательности в свойство DEFAULT у поля(колонки) с вызовом метода nextval(). Метод мы вызываем именно потому что нам нужно инкремент, то есть значение последней записи в данном поле, увеличенное на 1.

ALTER TABLE foo ALTER COLUMN a SET DEFAULT nextval('НАЗВАНИЕ_ПОСЛЕДОВАТЕЛЬНОСТИ');

Далее, нужно указать, что созданная последовательность с неким название принадлежит нашему полю(колонке). Это делается следующей командой:

ALTER SEQUENCE НАЗВАНИЕ_ПОСЛЕДОВАТЕЛЬНОСТИ OWNED BY НАЗВАНИЕ_ТАБЛИЦЫ.НАЗВАНИЕ_ПОЛЯ;

Оказывается все настолько просто. Теперь вам не нужно копать весь интернет и документацию для решения подобной задачи.

Похожие записи
  • Как запустить веб приложение через NP... Как запустить веб приложение через NPM с помощью serve. Есть множество способов запустить свои web html проекты. Для этого потребуется веб-сервер. Есть несколько простых веб-серверов для nodejs, которые можно использовать для запуска приложений. Это очень удобно для разработки и отладки. В данной статье не берем Express, так как он довольно сложен для настройки и использования. [...]
  • Как отследить все Javascript события ... Привет, сегодня я хочу рассказать тебе о простом но очень полезном методе, который позволяет отследить все Javascript события в Chrome. Он тебе поможет отследить все события, все вызовы всех функций на твоем сайте. Очень полезная команда для отладки фронт-энда. [...]
  • Как пользоваться популярными трекерам... Как пользоваться популярными трекерами без стороннего софта, прокси серверов или расширений Все просто. Недавно я писал про один из способ улучшить работу вашего интернета, который вы можете найти здесь и здесь. Днс сервера гугла помогут вам с этим, но могут и не помочь, как было у меня, потому как провайдер блокировал весь трафик, поступающий с данного [...]
  • Встраивание Foundation в Laravel с по... Что такое Elixir? Elixir — это компонент Laravel, позволяющий без проблем встраивать scss, sass, less компоненты в ваш проект. С помощью данного компонента очень легко можно подключить любые фронт-энд пакеты из npm, скомпилировать их, вести версии. Инструкция Для начала, чтобы скомпилировать исходный код фронтэнд библиотек, как известно, вам необходимо установить node с менеджером пакетов npm. [...]
  • ORM для CodeIgniter Недавно я писал про свой небольшой проект — доработку для CodeIgniter. Прочитать предыдущие статьи вы можете здесь. Здесь пойдет речь о упрощенной версии этого проекта, которую вы можете найти здесь. Собственно второй проект является упрощенной версией первого, так как не содержит моих методов для получения данных. Если вы искали именно это, то прошу. Генераторы моделей [...]

Пока нет комментариев

Добавить комментарий