postgresql从选择查询中插入值

时间:2016-09-01 09:53:27

标签: postgresql

我正在尝试使用以下选项插入select查询中的值:

INSERT INTO cb (vol_sec)
SELECT sum(vol)
FROM cb
GROUP BY cusec;

但错误消息是ERROR:列«id»限制的值null违反非null。我试图将NOT NULL更改为NULL,但我有另一条消息'the column<>是主键。 有没有办法避免这种错误?。提前谢谢。

3 个答案:

答案 0 :(得分:2)

必须遵循以下步骤:

  1. 删除约束PRIMARY KEY

    ALTER TABLE schema.cb DROP CONSTRAINT name_of_constraint;

  2. 更新constrait而不是nul。

    ALTER TABLE schema.cb ALTER COLUMN id DROP NOT NULL;

  3. 执行您的插入。

答案 1 :(得分:2)

目标表id中的cb列是主键,您似乎没有为id列定义任何默认值。

cb表中插入值时,主列id没有值。所以你得到了这个问题。

  

错误:列«id»限制的值null违反非空。

尝试为主键列id分配值。您可以通过将列数据类型更改为serial来自动递增。 删除表cb并使用id

的更新数据类型进行创建
--drop TABLE cb;
    CREATE TABLE cb
    (
      id integer serial,
       vol_sec integer,
      --other columns,
      CONSTRAINT pk_id PRIMARY KEY (id)
    );

希望它适合你。

答案 2 :(得分:1)

首先,我为延迟道歉。您的所有评论都帮助我解决了这个问题。按照提出的步骤,我最终将列(id)作为串行类型插入并执行查询,数据已成功插入。感谢。