Postgres插入选择将一列留空,而填充其他列

时间:2019-07-12 08:26:44

标签: postgresql select sql-insert

我有一个主表,其中包含一些日常记录。我将一些汇总的列复制到每月的汇总表AGG1,AGG2,AGG3。

最近创建了一个新的列类型smallint,它基本上是一个标志,仅包含零和一。这已添加到所有表中,主要的表和汇总的表。

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

然后我想将此值传播回AGG表。

当我在MAIN表中对所有汇总表运行Insert-Into-Select时,新列保持为空,而其他所有列均针对AGG1更新。新的smallint不会被复制。

AGG2和AGG3已正确填充。

由于汇总表是每月一次,因此在插入新记录之前,我首先删除1月份的所有数据。

  1. 我在水壶和sqlworkbench中运行了此结果,

  2. 如果仅运行选择以查看返回的内容,则将看到所有字段的所有正确值。

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

  1. AGG1没有任何触发器。和其他所有表一样,它是一个分区表。

  2. insert into Select not working for one column是一个类似的问题,但是表中有触发器。

INSERT INTO AGG1 (column1, column2, column3, ...)
SELECT column1, column2, column3, ... --some aggregates here
FROM MAIN
WHERE condition;

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

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

0 个答案:

没有答案