С Postgres 10 вышла замена для serial, которая решила в себе 2 проблемы:
- Репликация между узлами
- Пустоты в последовательности при rollback и следующей за ней транзакцией
- без решения проблем выше
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
);
Ashley Ferguson
Alice Bernal