Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres insert into select使一列为空,而填充其他列_Postgresql_Select_Sql Insert - Fatal编程技术网

Postgresql Postgres insert into select使一列为空,而填充其他列

Postgresql Postgres insert into select使一列为空,而填充其他列,postgresql,select,sql-insert,Postgresql,Select,Sql Insert,我有一个包含一些每日记录的主表。我将一些包含聚合的列复制到一些月度聚合表AGG1、AGG2、AGG3中 最近创建了一个新的列类型smallint,它基本上是一个标志,只包含0和1。这被添加到所有表中,包括主表和聚合表 我只需要为2019年设置标志,表中的数据是几年。因此,它在所有表中都是可为空的字段。我用2019年的适当标志值更新了MAIN的所有行 然后我想将这个值传播回AGG表 当我从主表向所有聚合表运行Insert Into Select时,新列将保持null,而AGG1的每一列都将更新。新

我有一个包含一些每日记录的主表。我将一些包含聚合的列复制到一些月度聚合表AGG1、AGG2、AGG3中

最近创建了一个新的列类型smallint,它基本上是一个标志,只包含0和1。这被添加到所有表中,包括主表和聚合表

我只需要为2019年设置标志,表中的数据是几年。因此,它在所有表中都是可为空的字段。我用2019年的适当标志值更新了MAIN的所有行

然后我想将这个值传播回AGG表

当我从主表向所有聚合表运行Insert Into Select时,新列将保持null,而AGG1的每一列都将更新。新的smallint不会被复制

AGG2和AGG3已正确填充

由于聚合表是每月一次的,所以在插入新记录之前,我首先删除所有数据,比如一月的数据

  • 我在kettle和sqlworkbench中运行了这个程序,得到了类似的结果

  • 如果我只运行select来查看返回的内容,那么我会看到所有字段的所有正确值

  • 3。。我能够将AGG1的所有值复制到我创建的新临时表中,只是为了检查这些值是否被复制。它只是专门针对AGG1失败

  • AGG1没有任何触发器。这是一个分区表,其他所有表也是

  • 是一个类似的问题,但是表中有触发器

  • 我没有得到任何错误,它只是说0行受影响,尽管它实际上添加了所有行(超过10k),但我在stackoverflow上读到,分区表可能会发生这种情况


    编辑:忘了提及我以后可以更新此列,但这是不可能的,因为我不再有标志信息。

    最终创建了一个新表,并对所有值进行了cpied。有时,向旧表中添加新列可能会使其行为异常。最后,创建了一个新表并对所有值进行cpied。有时,向旧表中添加新列可能会使其行为异常。
    INSERT INTO AGG1 (column1, column2, column3, ...)
    SELECT column1, column2, column3, ... --some aggregates here
    FROM MAIN
    WHERE condition;