【问题标题】:Primary key not AUTO INCREMENT in the PostgreSQLPostgreSQL 中的主键不是 AUTO INCREMENT
【发布时间】:2019-09-29 15:40:28
【问题描述】:

我有表格类别,我有 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');

这是我的桌子的图像:

【问题讨论】:

    标签: sql postgresql auto-increment


    【解决方案1】:

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

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

    【讨论】:

    • 您有任何示例如何将类型更改为串行?
    • @SInsansun。 . .我不使用下拉菜单来创建表格。我会假设 serialbigserial 是数据类型选项。如果没有,请使用create table
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2022-11-21
      • 2022-12-19
      • 2014-12-27
      • 1970-01-01
      • 2019-04-01
      • 2019-12-30
      相关资源
      最近更新 更多