Серийный тип производит только четные или нечетные числа в 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;