我希望将数据版本控制方法应用于客户资料表。在这种情况下,将在名为profile
的模式中创建表。主表称为profile_v0
,它是客户配置文件的初始状态,并具有名为name
的主键。有时会将更改捕获到表格change_log_1
,change_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的情况下实现吗?请注意,更改日志的数量将不断增加。