【发布时间】:2015-11-28 07:31:18
【问题描述】:
SERIAL数据类型的使用是自动递增值,所以在插入值时不需要指定值。如果我们创建一个
表并将值插入该表,默认情况下,SERIAL 列数据类型的值从 1 开始。但是有没有办法从 100 开始值并以 10 作为默认值而不是 1?
【问题讨论】:
标签: sql postgresql ddl
SERIAL数据类型的使用是自动递增值,所以在插入值时不需要指定值。如果我们创建一个
表并将值插入该表,默认情况下,SERIAL 列数据类型的值从 1 开始。但是有没有办法从 100 开始值并以 10 作为默认值而不是 1?
【问题讨论】:
标签: sql postgresql ddl
你可以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
【讨论】:
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;
【讨论】: