Postgres PL / pgSQL函数将一系列更改应用于表

时间:2017-12-07 14:56:57

标签: postgresql plpgsql

我希望将数据版本控制方法应用于客户资料表。在这种情况下,将在名为profile的模式中创建表。主表称为profile_v0,它是客户配置文件的初始状态,并具有名为name的主键。有时会将更改捕获到表格change_log_1change_log_2等等。

因此,最新的客户资料实际上是profile_v0,其中从change_log_1到最新的更改日志按顺序应用了更改。更改日志可以使用相同的主键覆盖以前的记录,也可以添加新记录。

如何编写PL / pgSQL函数来实现上述功能?我想象该函数只会将模式名称作为参数,并将识别驻留在其中的所有表并采取相应的行动。

用例子解释。

## profile.profile_v0

name, industry
Ford, Automotive
KFC, Food
7 Eleven, Retail
Google, Hardware
Microsoft, Software

...

## profile.change_log_1

name, industry
Google, Advertising
IBM, Services

...

## profile.change_log_2

name, industry
Cisco, Technology
KFC, Retail

此时,最新的客户档案(可能是不同架构中的物化视图)应为:

name, industry
Ford, Automotive
7 Eleven, Retail
Microsoft, Software
Google, Advertising
IBM, Services
Cisco, Technology
KFC, Retail

这可以在没有PL / pgSQL的情况下实现吗?请注意,更改日志的数量将不断增加。

0 个答案:

没有答案