Oracle - 新規/更新行トリガー
新規/更新行
このトリガーは、選択したテーブルまたはビューに挿入/更新された行を取得します。 各行は個別のジョブとして処理されます。 新規/更新された行がないか、ポーリング間隔ごとに1回チェックします。
トリガーの利用状況
このトリガーは、履歴レコードを含め、選択したテーブルまたはビューから一致するすべての行を取得します。 大規模なテーブルでトリガーが処理する行数を制限し、負荷を軽減するため、WHERE条件を追加することをお勧めします。
新規/更新行トリガー
| 入力フィールド | 説明 |
|---|---|
| テーブル | まず、行の処理元となるテーブル/ビューを選択します。 |
| 一意キー | 次に、行を一意に識別するための一意キー列を選択します。 この列のリストは、選択したテーブル/ビューから生成されます。 |
| ソート列 | 次に、更新された行を識別する列を選択します。 |
| WHERE条件 | 最後に、行をフィルタリングするための任意のWHERE条件を指定します。 |
新規/更新行のバッチ
このトリガーは、選択したテーブルまたはビューに挿入/更新された行を取得します。 これらの行は、各ジョブで行のバッチとして処理されます。 このバッチサイズは、トリガー入力で設定できます。 新規/更新された行がないか、ポーリング間隔ごとに1回チェックします。
トリガーの利用状況
このトリガーは、履歴レコードを含め、選択したテーブルまたはビューから一致するすべての行を取得します。 大規模なテーブルでトリガーが処理する行数を制限し、負荷を軽減するため、WHERE条件を追加することをお勧めします。
新規/更新行バッチトリガー
| 入力フィールド | 説明 |
|---|---|
| テーブル | 行を処理するテーブル/ビューを選択します。 |
| 一意キー | 行を一意に識別する一意キー列を選択します。 この列のリストは、選択したテーブル/ビューから生成されます。 |
| ソート列 | 更新された行を識別するために使用する列を選択します。 |
| バッチサイズ | このレシピの個別のジョブごとに処理するバッチサイズを設定します。 |
| WHERE条件 | 行をフィルターするための任意のWHERE条件を指定します。 |
入力
テーブル
Tableフィールドでは、行を処理するテーブル/ビューを選択します。 ピックリストからテーブルを選択するか、入力フィールドをテキストモードに切り替えて完全なテーブル名を入力できます。
一意キー
この選択した列の値は、選択したテーブル内の行の重複除外に使用されます。
選択した列の値は、テーブル内で重複していない必要があります。 通常、この列はテーブルの主キーです(例:ID)。 増分可能で、ソート可能である必要があります。 パフォーマンスを向上させるために、この列にインデックスを付けることもできます。
プライマリキー('P')制約または一意('U')制約を持つ列のみ使用できます。 次のSQLクエリを実行して、この要件を満たす列を確認します。
SELECT c.column_name
FROM all_indexes i, all_ind_columns c
WHERE
i.table_owner = 'TABLE_OWNER' AND
i.table_name = 'TABLE_NAME' AND
i.uniqueness = 'UNIQUE' AND
i.table_name = c.table_name AND
i.index_name = c.index_name
UNION
SELECT cc.column_name
FROM all_constraints con, all_cons_columns cc
WHERE
con.table_owner = 'TABLE_OWNER' AND
con.table_name = 'TABLE_NAME' AND
con.constraint_type in ('U', 'P') AND
con.table_name = cc.table_name AND
con.constraint_name = cc.constraint_name列が見つからない場合は、ベストプラクティスを参照して、作成方法を確認してください。
ソート列
ソート列は、テーブル内の行が更新されるたびに更新される列です。 通常、これはtimestamp列です。
行が更新されると、一意キーの値は同じままです。 ただし、最終更新時刻を反映するようにタイムスタンプが更新されている必要があります。 このロジックに従い、Workatoは、この列の値を、選択した一意キー列の値とともに追跡します。 Sort column値の変更が検出されると、更新行イベントが記録され、トリガーによって処理されます。
date、timestamp、timestamp with time zone、timestamp with local time zoneの列タイプのみ使用できます。 この要件を満たす列を確認するには、このSQLクエリを実行します。
SELECT column_name
FROM all_tab_columns
WHERE
owner = 'WORKATO' AND
table_name = 'ORACLE_STRING' AND
(data_type LIKE 'TIMESTAMP%' OR data_type LIKE 'DATE%')列が見つからない場合は、ベストプラクティスを参照して、作成方法を確認してください。
バッチサイズ
このフィールドは、各ジョブで返す行のBatch sizeを決定します。 これは1から最大バッチサイズまでの任意の数値にできます。 最大バッチサイズは1000で、デフォルトは100です。
任意のポーリングで、行数が設定済みのバッチサイズより少ない場合、このトリガーはすべての行をより小さいバッチとして配信します。
WHERE条件
WHERE条件は、1つ以上の列値に基づいて行をフィルターするために使用されます。 例:
status = 'closed' and priority > 3選択したテーブルのすべての行を処理するには、WHEREフィールドを空白のままにします。
サブクエリを含む複雑なWHERE条件も使用できます。 詳細については、WHERE条件ガイドを参照してください。
Last updated: