PostgreSQL 中的主键不是 AUTO INCREMENT
Primary key not AUTO INCREMENT in the PostgreSQL
我有 table 个类别,我有 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
这是我的 select 脚本:
INSERT INTO category ( category_name, category_description)
VALUES ('T_601', 'Yojimbo');
这是我的 table 的图片:
将数据类型改为serial
,这是Postgres的拼写方式auto_increment
。如果您有一个没有默认值的非 NULL
整数列,那么您将在尝试插入时遇到错误。
如果分配默认值,则唯一约束(primary key
的一部分)只会在第二次插入时产生重复键错误。
使用以下命令将序列号添加到列 category_id
CREATE SEQUENCE cateogry_id_seq;
ALTER TABLE category ALTER COLUMN category_id SET DEFAULT nextval('cateogry_id_seq');
现在该列将自动递增,您不必在插入查询中输入 catgory_id
列
我有 table 个类别,我有 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
这是我的 select 脚本:
INSERT INTO category ( category_name, category_description)
VALUES ('T_601', 'Yojimbo');
这是我的 table 的图片:
将数据类型改为serial
,这是Postgres的拼写方式auto_increment
。如果您有一个没有默认值的非 NULL
整数列,那么您将在尝试插入时遇到错误。
如果分配默认值,则唯一约束(primary key
的一部分)只会在第二次插入时产生重复键错误。
使用以下命令将序列号添加到列 category_id
CREATE SEQUENCE cateogry_id_seq;
ALTER TABLE category ALTER COLUMN category_id SET DEFAULT nextval('cateogry_id_seq');
现在该列将自动递增,您不必在插入查询中输入 catgory_id
列