Postgres中的SERIAL数据类型

时间:2015-11-28 07:31:18

标签: sql postgresql ddl

SERIAL数据类型的使用是自动递增值,因此在插入值期间无需指定值。如果我们创建一个 对于该表的表和插入值,默认值从SERIAL列数据类型的1开始。但是,有没有办法从100开始值并以10为增量值作为默认值?

2 个答案:

答案 0 :(得分:4)

Serial只是在int列之上的语法糖,它从序列中获取其值。虽然您无法直接控制serial列的定义,但您可以使用显式序列定义:

CREATE SEQUENCE tablename_colname_seq INCREMENT BY 10 START WITH 100; -- Here!
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

答案 1 :(得分:3)

您可以alter现有的序列(无论是序列号还是),如下所示

ALTER SEQUENCE mytbl_id_seq INCREMENT 10 RESTART with 100

创建表格时

create table mytbl (id serial,val int)

序列会自动生成,即

 CREATE SEQUENCE mytbl_id_seq
  INCREMENT 1
  START 1

所以你可以用你想要的值改变它,即

  ALTER SEQUENCE mytbl_id_seq 
    INCREMENT 10 
    RESTART with 100

sqlfiddle-demo