PostgreSQL - СЕРИЙНЫЙ

Опубликовано: 30 Марта, 2022

В PostgreSQL есть особый тип генератора объектов базы данных, который называется SERIAL. Он используется для генерации последовательности целых чисел, которые часто используются в качестве первичного ключа таблицы.

 Синтаксис: имя_переменной SERIAL

При создании таблицы эту последовательность целых чисел можно создать следующим образом:

 СОЗДАТЬ ТАБЛИЦУ имя_таблицы (
    id СЕРИЙНЫЙ
);

Назначая SERIAL столбцу id, PostgreSQL выполняет следующее:

  • На начальном этапе генерируются последовательности целых чисел, где следующее значение по умолчанию зависит от значения столбца.
  • Поскольку SERIAL всегда генерирует последовательность целых чисел, важно установить, что нулевое значение не добавляется в качестве идентификатора к любому столбцу. Это делается путем добавления ограничения NOT NULL.
  • Наконец, необходимо установить владельца последовательности для столбца ID. Эти идентификаторы автоматически удаляются при удалении столбца или таблицы.

PostgreSQL поддерживает 3 последовательных псевдотипа, а именно SMALLSERIAL, SERIAL и BIGSERIAL, которые имеют следующие характеристики:

Имя Размер хранилища Диапазон
НЕБОЛЬШИЕ 2 байта С 1 по 32, 767
СЕРИЙНЫЙ 4 байта 1-2, 147, 483, 647
БОЛЬШОЙ 8 байт С 1 по 9, 223, 372, 036, 854, 775, 807

Пример 1:
Сначала мы создадим таблицу животных со столбцом id в качестве столбца SERIAL, как показано ниже:

CREATE TABLE animals(
   id SERIAL PRIMARY KEY,
   name VARCHAR NOT NULL
);

Теперь при вставке значений в таблицу можно использовать любую из следующих команд:

 ВСТАВИТЬ животных (имя) 
ЦЕННОСТИ («Собака»);

или,

 ВСТАВИТЬ В животных (идентификатор, имя) 
ЗНАЧЕНИЯ (ПО УМОЛЧАНИЮ, «Собака»);

Итак, давайте добавим несколько строк в нашу таблицу животных, используя следующую команду:

 ВСТАВИТЬ животных (имя) 
ЦЕННОСТИ
      ('Собака'),
      ('Кот'),
      ('Корова'),
      ('Тигр'),
      ('Змея'),
      ('Бык');

Теперь проверьте, автоматически ли присвоены идентификаторы каждой строке, используя следующую команду:

 ВЫБРАТЬ * ИЗ животных;

Выход:

Пример 2:
Сначала мы создадим таблицу фруктов со столбцом id в качестве столбца SERIAL, как показано ниже:

 СОЗДАТЬ ТАБЛИЦЫ фрукты (
   id СЕРИЙНЫЙ ПЕРВИЧНЫЙ КЛЮЧ,
   имя VARCHAR NOT NULL
);

Теперь при вставке значений в таблицу можно использовать любую из следующих команд:

 ВСТАВИТЬ В фрукты (название) 
ЦЕННОСТИ («Яблоко»);

или,

 ВСТАВИТЬ В фрукты (идентификатор, имя) 
ЗНАЧЕНИЯ (ПО УМОЛЧАНИЮ, «Яблоко»);

Итак, давайте добавим несколько строк в нашу таблицу фруктов, используя следующую команду:

 ВСТАВИТЬ В фрукты (название) 
ЦЕННОСТИ
      ('Яблоко'),
      ('Банан'),
      ('Вишня'),
      ('Манго'),
      ('Виноград'),
      ('Апельсин');

Теперь проверьте, автоматически ли присвоены идентификаторы каждой строке, используя следующую команду:

 ВЫБРАТЬ * ИЗ фруктов;

Выход: