Серийный тип производит только четные или нечетные числа в postgresql

Я хочу установить некоторые ограничения на серийный тип, он производит только четные или нечетные числа.

2 ответа

SERIAL является синтаксическим сахаром вокруг создания и использования последовательностей.

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

CREATE SEQUENCE tablename_colname_seq INCREMENT BY 2 START WITH 2;

CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq');

ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

Или, если у вас уже есть стол и SERIAL В столбце вы можете изменить основную последовательность:

ALTER SEQUENCE tablename_colname_seq INCREMENT BY 2;

Имя базовой последовательности можно получить, "описав" таблицу с помощью psql:

\d tablename

Просто установите ваш серийный номер на 2 и начните с 1 или 2 для получения нечетного или четного числа:

Странный

CREATE SEQUENCE odd_seq INCREMENT BY 2 START WITH 1;

Четное

CREATE SEQUENCE even_seq INCREMENT BY 2 START WITH 2;
Другие вопросы по тегам