# Oracle - New/updated row (新規行/更新行) トリガー

# New/updated row (新規行/更新行)

このトリガーの対象となるのは、選択されたテーブルまたはビューに挿入/更新された行です。各行は別個のジョブとして処理されます。ポーリング間隔ごとに新規行/更新行をチェックします。

New/updated row トリガー New/updated row トリガー

入力項目 説明
Table 最初に、行を処理するテーブル/ビューを選択します。
Unique key 次に、行を一意に識別する一意のキー列を選択します。この列のリストは、選択したテーブル/ビューから生成されます。
Sort column ここでは、更新される行を識別する列を選択します。
WHERE condition 最後に、行をフィルタリングするためのオプションの WHERE 条件を入力します。

# New/updated batch of rows (新規行/更新行のバッチ)

このトリガーは、選択したテーブルまたはビューに挿入/更新される行を取得します。これらの行は、ジョブごとに行のバッチとして処理されます。このバッチサイズは、トリガーの入力で設定できます。ポーリング間隔ごとに新規行/更新行をチェックします。

New/updated batch of rows トリガー New/updated batch of rows トリガー

入力項目 説明
Table 最初に、行を処理するテーブル/ビューを選択します。
Unique key 次に、行を一意に識別する一意のキー列を選択します。この列のリストは、選択したテーブル/ビューから生成されます。
Sort column ここでは、更新される行を識別する列を選択します。
Batch size 次に、このレシピの各ジョブで処理するバッチサイズを設定します。
WHERE condition 最後に、行をフィルタリングするためのオプションの WHERE 条件を入力します。

# 入力項目

# Table

行を処理するテーブル/ビューを選択します。このためには、ピックリストからテーブルを選択するか、または入力項目をテキストモードに切り替えて完全なテーブル名を入力します。

# Unique key

選択したこの列の値は、選択したテーブル内で行の重複を削除するために使用されます。

そのため、選択した列内の値はテーブル内で繰り返されません。通常、この列はテーブルのプライマリキー (ID など) になります。この列は増分列で、並べ替え可能です。また、パフォーマンス向上のためにインデックスを付けることもできます。

PRIMARY KEY ('P') または UNIQUE ('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

列が見つからない場合は、そのような列を作成する方法についてのベストプラクティスを確認してください。

# Sort column

これは、テーブル内の行が更新されるたびに更新される列です。通常はタイムスタンプ列になります。

行の更新時、[Unique key] の値は変わりません。ただし、この値のタイムスタンプは、最後の更新日時を反映するよう更新されます。このロジックに従い、Workato ではこの列の値を、選択した [Unique key] 列の値と合わせて追跡します。 [Sort column] の値の変更が検出されると、更新された行のイベントがトリガーにより記録され、処理されます。

Oracle データベースの場合、 datetimestamptimestamp 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 ~最大バッチサイズ間の任意の数を指定できます。最大バッチサイズは 100 で、デフォルトは 100 です。

指定されたポーリングにおいて、行数が設定されたバッチサイズよりも少ない場合、このトリガーはすべての行をサイズの小さなバッチとして処理します。

# WHERE condition

この条件は、1つ以上の列の値に基づいて行をフィルタリングするために使用されます。

status = 'closed' and priority > 3

選択したテーブルのすべての行を処理するには、空白のままにしてください。

サブクエリーを含む複雑な WHERE 条件を使用することもできます。詳細については、WHERE 条件に関するガイドを参照してください。


Last updated: 2023/8/31 1:07:14