Различные методы автоматического приращения в PostgreSQL с примерами кода

В PostgreSQL существует несколько методов реализации функции автоматического приращения. Вот несколько методов с примерами кода:

Метод 1: использование типа данных SERIAL

CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50)
);

В этом методе вы можете определить столбец с типом данных SERIAL, который автоматически генерирует последовательность для столбца. Тип данных SERIALявляется псевдонимом для INTEGERи создает целочисленный столбец с автоматическим приращением. Ограничение PRIMARY KEYгарантирует уникальность столбца id.

Метод 2: использование предложения GENERATED AS IDENTITY (PostgreSQL 10+)

CREATE TABLE my_table (
    id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    name VARCHAR(50)
);

В PostgreSQL 10 и более поздних версиях вы можете использовать предложение GENERATED ALWAYS AS IDENTITYдля определения столбца с автоматическим приращением. Столбец idавтоматически генерируется, и ему присваивается уникальное значение всякий раз, когда в таблицу вставляется новая строка.

Метод 3: использование последовательности и триггера

CREATE SEQUENCE my_sequence START 1;
CREATE TABLE my_table (
    id INTEGER PRIMARY KEY DEFAULT nextval('my_sequence'),
    name VARCHAR(50)
);
CREATE OR REPLACE FUNCTION set_id_auto_increment()
    RETURNS TRIGGER AS $$
    BEGIN
        NEW.id := nextval('my_sequence');
        RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
CREATE TRIGGER set_id_auto_increment_trigger
    BEFORE INSERT ON my_table
    FOR EACH ROW
    EXECUTE FUNCTION set_id_auto_increment();

В этом методе создается последовательность (my_sequence), а столбцу idприсваивается следующее значение из последовательности с помощью nextval>функция. Создается функция set_id_auto_increment, которая запускается перед каждой операцией вставки, чтобы установить значение столбца idна следующее значение из последовательности.