gpt4 book ai didi

postgresql - 向 Postgres 分区主表添加新列

转载 作者:行者123 更新时间:2023-11-29 12:47:43 26 4
gpt4 key购买 nike

我有一张 table :

dw_readings(date_key, time_key, account_key, reading_value, consumption, processed_date) 

已按年份在 date_key 上进行了分区。我现在需要向主表添加一个 reading_id 列以支持新功能,但是使用 alter table 语句似乎无法正常工作。在应用 alter 添加新的 reading_id 列后,任何 insert into dw_readings 都会导致 reading_id 被设置为 null 尽管在 insert 语句中设置了值;这可以通过 Java JDBC 和 pgAdmin 重现。但是,设置 reading_idupdate 语句可以正常工作,允许我设置列值。

正在使用以下语句更改表

ALTER dw_readings ADD COLUMN reading_id INTEGER;

我需要知道的是如何正确地将新列添加到分区表,以便插入正常工作。

最佳答案

我设法找到了代码中的问题。问题与为分区创建的规则集有关。

    CREATE OR REPLACE RULE dw_readings_insert_y2009 AS
ON INSERT TO dw_readings
WHERE new.date_key >= 20090101 AND new.date_key < 20100101
DO INSTEAD
INSERT INTO dw_readings_y2009 (date_key, time_key, account_key, reading_value, consumption, processed_date)
VALUES (new.date_key, new.time_key, new.account_key, new.reading_value, new.consumption, new.processed_date);

此规则不包括新列,因此始终会为 reading_id 插入 null。解决方案是将 reading_id 添加到 DO INSTEAD 的 INSERT 语句中。

关于postgresql - 向 Postgres 分区主表添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com