仅使用主键字段将行插入表中

时间:2015-02-03 23:02:35

标签: sql postgresql primary-key auto-increment sql-insert

谷歌搜索告诉我试试这个:

insert into Plan default values;

但我得到了:

null value in column "id" violates not-null constraint

或者这个:

insert into Plan (id) values (null);

但是我得到了同样的东西。

示例适用于SQL:PostgreSQL有什么不同的东西吗?

表格结构:

  create table Plan (
    id int4 not null,
    primary key (id)
); 

2 个答案:

答案 0 :(得分:1)

您的列不接受NULL值(已定义not null),您也没有定义默认值。因此,必须提供integer值:

insert into plan (id) values (1235); -- any integer value

很可能你真的想要一个 serial 列,它从序列中提取默认值:

你的桌子看起来像这样:

CREATE TABLE plan (plan_id serial PRIMARY KEY); 

INSERT可能是:

INSERT INTO plan DEFAULT VALUES;

答案 1 :(得分:1)

您应该创建sequence并将默认值设置为nextval,如下所示:

create sequence plan_sequence
start 100
increment 1
;

  create table plan (
    id int4 not null default nextval('plan_sequence'),
    primary key (id)
); 

序列提供自动递增值。它用于主键等。