PostgreSQL中的主键不是AUTO INCREMENT

时间:2019-05-12 12:55:57

标签: sql postgresql auto-increment

我有表Category,并且有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

这是我的选择脚本:

INSERT INTO category ( category_name, category_description)
    VALUES ('T_601', 'Yojimbo');

这是我的桌子的图像: t

3 个答案:

答案 0 :(得分:2)

将数据类型更改为serial,这是Postgres拼写auto_increment的方式。如果您有一个非-NULL整数列且没有默认列,那么在尝试插入时会出现错误。

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

答案 1 :(得分:0)

使用以下内容将序列添加到列category_id

CREATE SEQUENCE cateogry_id_seq;
ALTER TABLE category ALTER COLUMN category_id SET DEFAULT nextval('cateogry_id_seq');

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

答案 2 :(得分:-2)

在Sql中使用身份自动递增