将行插入 table 只有一个主键字段

Insert row into table with only a primary key field

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

insert into Plan default values;

但我得到了:

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

或者这个:

insert into Plan (id) values (null);

但我得到了同样的结果。

示例是针对 SQL 的:PostgreSQL 有什么不同吗?

Table结构:

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

您的列不接受 NULL 值(已定义 not null),并且您也没有定义默认值。所以你必须提供一个integer值:

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

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

  • Auto increment SQL function

您的 table 可能如下所示:

CREATE TABLE plan (plan_id serial PRIMARY KEY); 

INSERT 可能是:

INSERT INTO plan DEFAULT VALUES;

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

create sequence plan_sequence
start 100
increment 1
;

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

一个序列提供了一个自动递增的值。用于主键等