REPLICATE ステートメント
REPLICATE ステートメントを使用すると、キャッシュデータベース内で一つもしくは複数のテーブルのコピーを維持することが容易になります。REPLICATE ステートメントが呼び出されるたびに、本製品 は、前回のキャッシュデータベースの更新後に発生した変化の増分を要求します。
REPLICATE ステートメントは、新しい行の追加、変更された既存の行の更新、削除された行の削除を行います。REPLICATE ステートメントは、データソースから使用できるAPI に基づいて、複数の基本的な操作を実行できます。すべての操作は、キャッシュデータの一貫性を維持する単一のトランザクションとして実行されます。
REPLICATE 構文
REPLICATE ステートメントを使って、次のアクションを実行できます。
- 一つのテーブルをレプリケート:REPLICATE <table_name>
- すべてのテーブルをレプリケート:REPLICATE ALL
- 指定されたテーブルのみレプリケート:REPLICATE TABLES
-
クエリの結果をレプリケート:REPLICATE <select_statement>SELECT ステートメントを使用して、キャッシュされるカラムやカラムの名前を制御したり、データを複製する前にSQL 式を適用します。
EXCLUDE COLUMNS 句は、これらすべての構文で指定することができます。REPLICATE ALL 構文は、追加でEXCLUDE TABLES 句をサポートします。
以下は完全な構文です:
REPLICATE
{
[ <cached_table_name> ]
[ EXCLUDE COLUMNS ( <column_name> [ , ... ] ) ]
{ <select_statement> | <table_reference> }
(<column_definition> [ , ... ] [<table_constraint>])
[WITH {<option_name>=<option_value>|<option_name>} , ... ]
[AS] { <select_statement> | <table_reference> }
}
| TABLES
(
{
<table_name>
[ EXCLUDE COLUMNS ( <column_name [ , ... ] ) ]
} [ , ... ]
)
| ALL
[
{
EXCLUDE COLUMNS ( { <table_name>.<column_name> } [ , ... ] )
| EXCLUDE TABLES ( <table_name> [ , ... ] )
}
]
<table_constraint> := PRIMARY KEY(<column_name>,...)
<option_name> := DropTable | TruncateTable | AlterSchema ...
<option_value> := <literal> | <identifier>
一般的なクエリ
次のステートメントを使用すると、テーブルのコピーを維持できます。このコマンドは、キャッシュデータベース内にテーブル を作成します(まだ存在しない場合)。テーブルが存在する場合は、REPLICATE ステートメントは前回のキャッシュの更新以降の最新の変更(新たに更新、削除、および挿入されたレコード)を更新します。
REPLICATE Accounts
次のステートメントを使用すると、Accounts をREP_Accounts に複製できます。
REPLICATE REP_Accounts SELECT Id, Name FROM Accounts
次のステートメントを使用すると、特定のカラムを選択して、複製される前のデータに対して操作を実行できます。このコマンドは、DateModified カラムとFullName カラムを使用してテーブルREP_Accounts を作成します。FullName カラムは、Accounts テーブルのFirstName とLastName を連結したカラムです。
REPLICATE REP_Accounts SELECT DateModified, CONCAT(firstname," ",lastname) AS FullName FROM AccountsNote: キャッシュにすでに存在するカラムの数よりも少ない数のカラムを選択すると、一部のカラムに古いデータが残ります。プロジェクションがカスタマイズされているSELECT ステートメント(カラムの名前 / 値が変更されている、固有のカラムがある、など)は、キャッシュの存続期間を通じて同一である必要があります。