【问题标题】:How to identify if a table has been changed in Greenplum?如何识别Greenplum中的表是否已更改?
【发布时间】:2016-12-01 21:54:24
【问题描述】:

我们有一个将两个表作为输入的过程。这是我的场景.. 运行流程时,我需要知道两个输入表中的数据是否已从先前执行期间的内容更改(插入或更新或截断或删除),以确定在过程。基本上,这是我确定运行是重新运行还是流程失败后运行的标准之一。

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

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

关于在 Greenplum 中捕获此表更改信息的有效方法有什么建议吗?我正在使用 PostgrSQL。

谢谢。

【问题讨论】:

    标签: sql database postgresql greenplum


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多