Postgres中的SERIAL数据类型

3

SERIAL数据类型的用途是自动增加值,因此在插入值时无需指定值。如果我们创建一个表并向该表插入值,则默认情况下SERIAL列数据类型的值从1开始。但是,是否有任何方法可以从100开始值并以10递增作为默认值?

2个回答

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;

3
你可以像下面那样更改现有序列(无论它是否是序列或其他类型): alter
ALTER SEQUENCE mytbl_id_seq INCREMENT 10 RESTART with 100

创建表时
create table mytbl (id serial,val int)

一段序列(sequence)将自动创建,即:
 CREATE SEQUENCE mytbl_id_seq
  INCREMENT 1
  START 1

所以你可以使用你想要的值来改变它,例如:

  ALTER SEQUENCE mytbl_id_seq 
    INCREMENT 10 
    RESTART with 100

sqlfiddle-demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接