PostgreSQL Sequence
PostgreSQL sequence - это объект базы данных, который используется для генерации уникальных чисел или идентификаторов. Он используется в основном для автоматического создания значения первичного ключа в таблице.
Для создания sequence в PostgreSQL можно использовать следующий синтаксис:
CREATE SEQUENCE sequence_name
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ CACHE cache ]
[ [ NO ] CYCLE ]
Рассмотрим некоторые из этих параметров:
- INCREMENT [ BY ] increment: определяет шаг увеличения значения sequence. Если не указан, по умолчанию будет использоваться инкремент равный 1.
- MINVALUE и MAXVALUE: определяют минимальное и максимальное значения sequence.
- START [ WITH ] start: задает начальное значение sequence.
- CACHE cache: определяет количество значений sequence, которые будут кэшироваться в памяти для повышения производительности доступа к sequence.
- [ NO ] CYCLE: определяет поведение sequence после достижения максимального или минимального значения. Если CYCLE установлен, sequence будет продолжать с самого начала, а если NO CYCLE - ошибки будут генерироваться при попытке достичь этих границ.
Пример кода:
-- Создание sequence с именем "my_sequence" и инкрементом равным 2
CREATE SEQUENCE my_sequence INCREMENT BY 2;
-- Создание таблицы "my_table" с первичным ключом, использующим sequence
CREATE TABLE my_table (
id INTEGER PRIMARY KEY DEFAULT nextval('my_sequence')
);
-- Вставка данных в таблицу, значениями ID будут автоматически уникальные числа из sequence
INSERT INTO my_table (name) VALUES ('John');
INSERT INTO my_table (name) VALUES ('Jane');
SELECT * FROM my_table;
Результат:
id | name
---|------
1 | John
3 | Jane
Как видно из примера, значения для столбца "id" в таблице "my_table" были автоматически сгенерированы с помощью sequence "my_sequence". Первое значение - 1, так как мы не указали явным образом start значение при создании sequence. Затем значение "id" увеличилось на 2 и стало равным 3 для второй вставки данных.
Использование sequence облегчает автоматическую генерацию уникальных идентификаторов при вставке данных в таблицу и может быть полезно в различных сценариях разработки баз данных.