如何识别Greenplum中的表格是否已更改?

时间:2016-12-01 21:54:24

标签: sql database postgresql greenplum

我们有一个进程,它将两个表作为输入。这是我的场景..当进程运行时,我需要知道两个输入表中的数据是否已经从上次执行期间的更改(插入或更新或截断或删除),以确定其中的进一步操作过程。处理。基本上,这是我确定运行是新运行还是运行失败后运行的标准之一。

我能想到的一种方法是在运行进程时备份输入表,并在下次运行时使用EXCEPT语句将其与输入进行比较,并在进程成功完成时删除备份表。但我正在寻找更优雅的东西。

我认为另一种方法是使用触发器捕获时间戳,根据它做一些事情。但不幸的是,似乎不可能在Greenplum中使用触发器执行查询。我将在添加触发器的同一个表上添加时间戳列。我并不热衷于这样做,因为输入表由进程的用户控制而不是由开发人员控制。如果由于某种原因在添加新的时间戳列后进程失败,则可能会使用户(来自业务)感到惊讶。

有关捕获此表的有效方法的任何建议都会改变Greenplum中的信息吗?我正在使用PostgrSQL。

感谢。

1 个答案:

答案 0 :(得分:0)

Greenplum不支持触发器,因此建议的解决方案不起作用。

如何将每个流程执行的活动记录到表或文件中?