PostgreSQL是否支持在序列定义中设置起始值?

5

这里有一个关于使用alter关键字更改序列值的问题。是否可以在创建表定义时完成?像这样:

CREATE TABLE tablename (
    colname SERIAL stars 1000
);

1000是起始值吗? - Evan Carroll
2个回答

5
您可以尝试这个查询语句。它对我有用过。
CREATE SEQUENCE tablename_colname_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1 ---> here you can mention startup nummber as you need
  CACHE 1;

CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);

4

身份列

目前在 PostgreSQL 9.x 中,使用特定于 PostgreSQL 的 serial-type 语法CREATE TABLE 命令中无法实现此功能。但是,在 PostgreSQL 10 中将使用 标准化的身份列语法,可以在这里查看我的回答

以下是它的外观

CREATE TABLE foo (
    id int GENERATED { ALWAYS | BY DEFAULT }
      AS IDENTITY [ ( sequence_options ) ]
);

(sequence_options)代表START WITH 1000,因此类似于这样。

CREATE TABLE foo (
  foo_id   int   GENERATED ALWAYS AS IDENTITY (START WITH 1000)
);

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