【问题标题】: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。

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


【解决方案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)
    ); 
    

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

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 2019-01-14
      • 2015-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多