在 postgresql 中生成自动 ID

mrg*_*mrg 4 sql postgresql rdbms

用户表:

    ID  Name
    1   usr1
    2   usr2
    3   usr3
Run Code Online (Sandbox Code Playgroud)

上表中,ID为主键。我的要求是在将数据插入表时,我只想指定名称,例如INSERT INTO user VALUES('usr4'). 执行查询后,有没有办法自动为“usr4”创建ID?

我尝试使用串行数据类型。为此,我们还必须指定关键字 default,例如INSERT INTO user VALUES(default,'usr4')。那么,有什么办法可以做到类似INSERT INTO user VALUES('usr4'). 注意:ID 应该是唯一的。

Mik*_*ll' 7

使用内置数据类型serial或bigserial.

create table users (
  id serial primary key,
  name varchar(100) not null unique -- ?
);
Run Code Online (Sandbox Code Playgroud)

命名列;省略serial 或bigserial 列的名称。

insert into users (name) values ('usr4');
Run Code Online (Sandbox Code Playgroud)

一般规则是您必须为 INSERT 语句中使用的每一列提供一个值。如果不指定列名,则必须为每一列提供一个值,包括“Id”,并且必须按照列在表中出现的顺序提供它们。

如果指定列名,则可以省略具有默认值的列和可为空的列,并且可以按任意顺序放置列名。值的顺序必须与您指定的列名称的顺序匹配。