Postgres Identity

С Postgres 10 вышла замена для serial, которая решила в себе 2 проблемы:

  1. Репликация между узлами
  2. Пустоты в последовательности при rollback и следующей за ней транзакцией
  1. без решения проблем выше
CREATE TABLE tools_api.user (
    user_id serial PRIMARY KEY NOT NULL,
    login text NOT NULL
);

Или

2) с решением проблем выше

CREATE TABLE tools_api.user (
    user_id numeric NOT NULL,
    login text NOT NULL
);

CREATE UNIQUE INDEX user_pk ON tools_api.user(user_id);

DROP SEQUENCE IF EXISTS tools_api.user_id_sequence CASCADE;
CREATE SEQUENCE tools_api.user_id_sequence
    INCREMENT BY 1
    MINVALUE 100
    MAXVALUE 9223372036854775807
    CACHE 1
    NO CYCLE;

Стало:

CREATE TABLE tools_api.user (
    user_id bigint PRIMARY KEY GENERATED ALWAYS AS identity (START WITH 100 INCREMENT BY 1),
    login text NOT NULL
);

Оцените автора
Kosenkov.Pro
Добавить комментарий

  1. Ashley Ferguson

    Ashley Ferguson

    Ответить
  2. Alice Bernal

    Alice Bernal

    Ответить