PostgreSQL 中的主键不是 AUTO INCREMENT

SIn*_*sun 0 sql postgresql auto-increment

我有表类别,我有 3 列category_id, category_name,category_description。当我执行不带category_id参数的插入脚本时,出现此错误:

ERROR:  null value in column "category_id" violates not-null constraint
DETAIL:  Failing row contains (null, T_601, Yojimbo).
SQL state: 23502
Run Code Online (Sandbox Code Playgroud)

这是我的选择脚本:

INSERT INTO category ( category_name, category_description)
    VALUES ('T_601', 'Yojimbo');
Run Code Online (Sandbox Code Playgroud)

这是我的桌子的图像: 吨

小智 7

使用以下命令将序列添加到列category_id

CREATE SEQUENCE cateogry_id_seq;
ALTER TABLE category ALTER COLUMN category_id SET DEFAULT nextval('cateogry_id_seq');
Run Code Online (Sandbox Code Playgroud)

现在该列将自动递增,您不必catgory_id在插入查询中输入该列


Gor*_*off 5

将数据类型更改为serial,这是 Postgres 的拼写方式auto_increment。如果你有一个NULL没有默认值的非整数列,那么当你尝试插入时你会得到一个错误。

如果您分配默认值,则唯一约束( 的一部分primary key)只会在第二次插入时创建重复键错误。