将行插入 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)
);
一个序列提供了一个自动递增的值。用于主键等
谷歌搜索告诉我试试这个:
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)
);
一个序列提供了一个自动递增的值。用于主键等