2009-08-15 40 views

回答

4

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 
+0

我已经有一个序列,并且curval是3,但是我想要产生偶数4,6,8,10 ... – yjfuk 2009-08-15 16:46:41

3

简单,设置你的串口2递增,并开始在1或2个用于生产奇数或偶数:

CREATE SEQUENCE odd_seq INCREMENT BY 2 START WITH 1; 

即使

CREATE SEQUENCE even_seq INCREMENT BY 2 START WITH 2; 
+0

我可以更改默认的创建序列增量2吗? – yjfuk 2009-08-15 15:43:13