串行类型在postgresql中只生成偶数或奇数

时间:2009-08-15 11:09:11

标签: postgresql auto-increment nextval

我想为串行类型设置一些约束,它只产生偶数或奇数。

2 个答案:

答案 0 :(得分:5)

SERIAL围绕创建和使用序列syntax sugar

因此,您可以手动完成所有操作,并create一种特殊类型的序列,以满足您的需求:

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列,则可以change基础序列:

ALTER SEQUENCE tablename_colname_seq INCREMENT BY 2;

可以通过使用psql“<描述”表来检索基础序列的名称:

\d tablename

答案 1 :(得分:4)

只需将序列设置为2,然后从1或2开始生成奇数或偶数:

CREATE SEQUENCE odd_seq INCREMENT BY 2 START WITH 1;

即使

CREATE SEQUENCE even_seq INCREMENT BY 2 START WITH 2;