【问题标题】:How to auto-increment in PostgreSQL? [duplicate]如何在 PostgreSQL 中自动递增? [复制]
【发布时间】:2011-03-07 17:32:51
【问题描述】:

我有一个表登录。它有字段等级、用户名和密码。

我希望排名字段值在添加用户名和密码时自动递增。

如何在 PostgreSQL 中做到这一点?

【问题讨论】:

  • 顺便说一句,您的问题中有一个小的输入错误。是增量不是增量。如果你改了,更多的人会发现这个问题,加上相关的问题会更合适。
  • 这是关于现有表的,而另一个问题更多是关于 IMO 的新表。所以它不是真正的重复,除非你合并它们。

标签: postgresql


【解决方案1】:

可以创建一个序列,它会自动增加排名列的值。

CREATE SEQUENCE rank_id_seq;

CREATE TABLE yourtable (
    rank INTEGER NOT NULL default nextval('rank_id_seq'),
    username VARCHAR(20) NOT NULL,
    password VARCHAR(50) NOT NULL
);

ALTER SEQUENCE rank_id_seq owned by yourtable.rank;

【讨论】:

    【解决方案2】:

    您正在寻找数据类型为Serial 的列。有关该数据类型的更多信息,请参阅this page(底部)。

    例如,您的表定义可能如下所示:

    CREATE TABLE yourtable (
        rank SERIAL NOT NULL,
        username VARCHAR(20) NOT NULL,
        password VARCHAR(50) NOT NULL
    );
    

    【讨论】:

    • @Milen A. Radev,感谢您将该锚点添加到我的链接中 :)
    • 自动递增的工作方式如下:insert into yourtable (username, password) values ('moobars', 'boobars'); 然后数据库自动递增排名列。
    • SERIAL 不是数据类型,只是默认为序列的整数的别名(参见 Sanjay Kumar 的 asnwer)
    【解决方案3】:
    create table login (rank serial, username varchar(20), password varchar(20))
    

    串行数据类型是你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-01
      • 2020-03-19
      • 2016-03-07
      • 2019-02-10
      • 2011-02-26
      • 2017-03-22
      • 1970-01-01
      相关资源
      最近更新 更多