1

我想对序列类型设置一些约束,它只产生偶数或奇数。

4

2 回答 2

6

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
于 2009-08-15T11:29:33.973 回答
4

简单地说,将您的序列设置为增加 2,并从 1 或 2 开始以生成奇数或偶数:

奇怪的

CREATE SEQUENCE odd_seq INCREMENT BY 2 START WITH 1;

甚至

CREATE SEQUENCE even_seq INCREMENT BY 2 START WITH 2;
于 2009-08-15T13:05:15.310 回答