RDBPut - RDBへの出力

RDBMSのテーブルに対して更新を行います。

■ストリーム情報

入力フォーマットRecord
接続数1
説明 入力ストリームのフィールド定義を専用の設定画面で行います。
このフィールド定義は直前に連結したマッパーの出力ストリームのフィールド定義にコピーされ、そこに対して値のマッピングを行います。そのため、このコンポーネントに連結できるコンポーネントはマッパーのみとなっています。
出力フォーマットRecord
説明 入力ストリームをそのまま出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
コネクション名connection 接続先のRDBを指定します。 コネクションペインまたは管理コンソールにて作成されたRDB接続名を選択します。
実行する処理choice 実行する更新操作を指定します。
各モードごとの動作については、下記トピック「実行する処理ごとの動作」を参照してください。
テーブル名string入力&出力 更新対象のテーブル名を指定します。
値フィールドをクリックすると、テーブル名とフィールドの設定画面が表示されます。ここでフィールド定義を行うことによってテーブル名が自動で設定されます。設定画面については、下記トピック「テーブル名とフィールドの設定」を参照してください。
処理件数int   出力 実際に更新されたレコード件数が取得できます。
入力category 入力ストリームのフィールド定義を行います。実行する処理が「Insert」以外の場合、テーブルのキーとなるカラムの「キーにする」項目で「はい」を指定します。
※「Insert」で、DBMSがOracleで、かつBLOBまたはCLOB列を使用する場合はキーを設定する必要があります。

■トランザクション処理

コミットRDBMSをコミットします。
ロールバックRDBMSをロールバックします。

■エラー処理

タイプパラ
メータ
エラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし コネクション名に指定したコネクションが見つからない場合
なし テーブルまたはフィールドが見つからない場合
なし SQLの実行に失敗した場合
なし 実行する処理が「Insert」以外でキーが指定されていない場合
接続エラー なし コンポーネントの入力ストリーム なし DBMSとの接続に失敗した場合

■実行する処理ごとの動作

Insert

フィールド定義にあるすべてのフィールドをテーブルにレコードとして挿入します。
通常キー定義は使用しませんが、DBMSがOracleで、かつBLOBまたはCLOB列がフィールドに含まれる場合はキー定義が必要です。

Update

「キーにする」項目で「はい」を指定したフィールドにマッチするレコードを、キー以外のフィールドを用いて更新します。
キーにするフィールドを更新することはできません。

Insert/Update

フィールド定義を用いてInsertを実行し、キー違反エラーが発生した場合はUpdateを実行します。キー違反エラーとはPRIMARY Key制約やUNIQUE Key制約に違反した場合に発生するエラーです。キーにするフィールドにこれらの制約が設定されていない場合には、このモードは正常に動作しません。
※PostgreSQLではこのモードは使用できません。

Update/Insert

フィールド定義を用いてUpdateを実行し、更新件数が0件の場合はInsertを実行します。

Delete

「キーにする」項目で「はい」を指定したフィールドにマッチするレコードを削除します。
キーにするフィールド以外は使用しません。

Insert/UpdateとUpdate/Insertの違いについて

この2つの機能の違いはInsertとUpdateの発行順序の違いです。結果について基本的な違いはありませんが、次の点に注意して利用してください。

パフォーマンス

「Insert/Update」は、Insertが失敗したらUpdateを発行するので、Insertが成功すればUpdateは発行されません。 逆に「Update/Insert」では、Updateが失敗したらInsertを発行するので、Updateが成功すればInsertは発行されません。 つまり、Insertが成功する確率が高いケースでは「Insert/Update」を使い、 逆にUpdateが成功する確率が高いケースでは「Update/Insert」を使うのが効率的です。

シーケンスやオートナンバー

DB側で自動的にユニークな値を設定するような型を使用している場合に「Insert/Update」を使用すると、 キー違反がおこらなくなり常にレコードがInsertされるようになります。 このような場合は「Update/Insert」を使用するようにしてください。

フィールドに設定する制約

「Insert/Update」ではキーにするフィールドにはPRIMARY Key制約やUNIQUE Key制約を設定しておく必要があります。 キーにするフィールドにこれらの制約が設定されていないと、常にレコードがInsertされるようになります。 「Update/Insert」ではキーにするフィールドにこれらの制約を設定しなくても動作しますが、 キーにするフィールド以外のフィールドにこれらの制約が設定されていると、設定する値によってはUpdateやInsert時に制約違反が発生する可能性があります。

■テーブルとフィールドの設定

RDBMSのテーブルに対して処理するテーブルとフィールドの選択は、専用のダイアログボックスから行います。ダイアログボックスから選択すると、インスペクタの入力タブに処理対象フィールドとして表示されます。キーを指定するには、専用のダイアログボックスでフィールドを選択してから、インスペクタの入力タブでキーとなるフィールドの「キーにする」項目を「はい」にします。

●定義画面を表示する

定義画面を表示するには、以下のいずれかの操作を行います。

●読み込むテーブルを指定する

定義画面を表示すると(1)にテーブルの一覧が表示されます。テーブルを指定すると、(3)(5)に情報が表示されます。

●処理対象フィールドを指定する

テーブルを指定すると、(5)にテーブルのフィールド一覧が表示されます。初期状態では、すべてのフィールドが処理対象になるように(4)のチェックボックスがオンになっています。

フィールドを選択して「OK」をクリックすると、インスペクタの入力タブにフィールド一覧が表示されます。キーを指定するには、キーとなるフィールドの「キーにする」項目を「はい」にします。