【问题标题】:Does postgres support to set start value at serial definition?postgres 是否支持在序列定义时设置起始值?
【发布时间】:2023-03-22 03:35:01
【问题描述】:

Here 是一个关于用alter 关键字改变序列值的问题。这可以在创建表定义中完成吗?像这样:

CREATE TABLE tablename (
    colname SERIAL stars 1000
);

【问题讨论】:

  • 1000是起始值吗?

标签: sql postgresql auto-increment


【解决方案1】:

身份列

目前没有办法在 PostgreSQL 9.x 中的 CREATE TABLE 命令中使用 PostgreSQL 特定的 serial-type syntax 执行此操作。但是,它在 PostgreSQL 10 中使用 standardized Identity Columns syntax, see my answer on it here

这是它的外观

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)
);

【讨论】:

    【解决方案2】:

    你可以试试这个查询。它对我有用。

    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')
    );
    

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 2019-12-09
      • 2014-03-20
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多