我想为串行类型设置一些约束,它只产生偶数或奇数。
答案 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;