2016-12-01 19 views
0

2つのテーブルを入力として使用するプロセスがあります。ここで私のシナリオです..プロセスが実行されるとき、私は、2つの入力テーブルのデータが以前の実行中のものから(挿入または更新または切り捨てまたは削除)変更されたかどうかを知る必要があります。プロセス。基本的にこれは私の判断基準の一つで、実行が新鮮なものか、プロセスの失敗後のものかを判断するものです。Greenplumで表が変更されたかどうかを確認するには?

私が考えることができる1つの方法は、プロセスが実行されるときに入力テーブルをバックアップし、次の実行時にEXCEPTステートメントを使用して入力と比較し、プロセスが正常に完了したときにバックアップされたテーブルを削除することです。しかし、私はよりエレガントなものを探しています。

私が考えた別の方法は、トリガーを使用してタイムスタンプをキャプチャすることです。しかし残念ながら、Greenplumのトリガを使ってクエリを実行することはできないようです。私はトリガーを追加する同じテーブルにタイムスタンプの列を追加する必要があります。私は、入力テーブルがプロセスのユーザーによって制御され、開発者によって制御されないので、これを行うことに熱心ではありません。何らかの理由で新しいタイムスタンプ列を追加した後にプロセスが失敗した場合、(ビジネスの)ユーザーを驚かせる可能性があります。

このテーブルを効率的に取得する方法に関する提案は、Greenplumの情報を変更しますか?私はPostgrSQLを使用しています。

ありがとうございました。

答えて

0

Greenplumはトリガをサポートしていないため、提案された解決策は機能しません。

プロセスの実行ごとにアクティビティをテーブルまたはファイルに記録するのはどうですか?

関連する問題