将行插入到只有一个主键字段的表中
Posted
技术标签:
【中文标题】将行插入到只有一个主键字段的表中【英文标题】:Insert row into table with only a primary key field 【发布时间】:2015-04-03 07:56:04 【问题描述】:谷歌搜索告诉我试试这个:
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)
);
【问题讨论】:
你能展示一下你的表结构吗?! "示例用于 SQL" - 没有意义。 Postgres 是使用 SQL。 【参考方案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;
【讨论】:
【参考方案2】:您应该创建一个sequence
并将默认设置为nextval
,如下所示:
create sequence plan_sequence
start 100
increment 1
;
create table plan (
id int4 not null default nextval('plan_sequence'),
primary key (id)
);
序列提供一个自动递增的值。它用于主键等。
【讨论】:
以上是关于将行插入到只有一个主键字段的表中的主要内容,如果未能解决你的问题,请参考以下文章