Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 在另一个表的日期列上进行日期驱动的表分区_Postgresql_Partitioning_Database Trigger - Fatal编程技术网

Postgresql 在另一个表的日期列上进行日期驱动的表分区

Postgresql 在另一个表的日期列上进行日期驱动的表分区,postgresql,partitioning,database-trigger,Postgresql,Partitioning,Database Trigger,我有一个触发器函数,可以根据父表(表1)中的日期列自动创建子表。我必须根据另一个表(表2)中的日期列进行修改 这可能吗?我在表1中有外键,它与表2中的id列链接 我在互联网上搜索过,但大部分都找到了我已经解决的任务的不同脚本(父表中的日期列,而不是另一个表中的日期列) 示例:根据表发票中的发票日期对表发票详细信息进行月度分区(外键发票详细信息.invoice\u id->invoice.invoice\u id) 您能提供一个模式和预期分区的示例吗?我已经用附加代码编辑了这个问题。这只是一个基本

我有一个触发器函数,可以根据父表(表1)中的日期列自动创建子表。我必须根据另一个表(表2)中的日期列进行修改

这可能吗?我在表1中有外键,它与表2中的id列链接

我在互联网上搜索过,但大部分都找到了我已经解决的任务的不同脚本(父表中的日期列,而不是另一个表中的日期列)

示例:根据表发票中的发票日期对表发票详细信息进行月度分区(外键发票详细信息.invoice\u id->invoice.invoice\u id)


您能提供一个模式和预期分区的示例吗?我已经用附加代码编辑了这个问题。这只是一个基本的例子,只有很少的列。一张发票可以有很多发票详细信息吗?按发票id划分会给你类似的效果吗?或充电类型或充电状态?分区背后的动机是什么?您可能希望避免冗余数据,例如将
invoice\u date
复制到
invoice\u details
,但您可以通过触发器来缓解这种情况。然而,分区并不是使大表变小,而是使索引和过滤更容易。按发票对发票详细信息进行分区
invoice
by
invoice.invoice\u date
不会有帮助,因为按发票日期进行过滤是在发票中进行的,然后它是一个简单的联接。除了易于索引的
invoice\u id
,您最常根据哪些字段进行筛选?例如,如果您经常寻找未结清余额的发票,
charge\u status
将是一个不错的选择。您能提供一个模式和预期分区的示例吗?我已经用其他代码编辑了这个问题。这只是一个基本的例子,只有很少的列。一张发票可以有很多发票详细信息吗?按发票id划分会给你类似的效果吗?或充电类型或充电状态?分区背后的动机是什么?您可能希望避免冗余数据,例如将
invoice\u date
复制到
invoice\u details
,但您可以通过触发器来缓解这种情况。然而,分区并不是使大表变小,而是使索引和过滤更容易。按发票对发票详细信息进行分区
invoice
by
invoice.invoice\u date
不会有帮助,因为按发票日期进行过滤是在发票中进行的,然后它是一个简单的联接。除了易于索引的
invoice\u id
,您最常根据哪些字段进行筛选?例如,如果您经常寻找未结清余额的发票,
charge\u status
将是一个不错的选择。
CREATE TABLE public.invoice_details
(
    id integer NOT NULL,
    invoice_id integer NOT NULL,
    charge_type integer,
    charge_amount numeric(15,5),
    charge_tax numeric(15,5),
    charge_status character varying COLLATE pg_catalog."default")
TABLESPACE pg_default;

CREATE TABLE public.invoice
(
    invoice_id integer NOT NULL,
    customer character varying COLLATE pg_catalog."default",
    invoice_date date NOT NULL)