DDLの比較機能は、テーブルまたはビューをコピーする前に、ソース テーブルまたはビューの列のDDLとターゲット テーブルまたは列のDDLを比較します。テーブルがターゲット システムにまだ存在しない場合、比較はスキップされます。
この機能が有効な場合は、createかmoveコマンドを使用してジョブを作成したとき、またはstartコマンドを使用してジョブを開始したときに、毎回比較が実行されます。
テーブルのDDLの比較
テーブルのDDL比較機能は、列数、MAPSプロパティ、およびプライマリ時間インデックス(PTI)プロパティをソース テーブルとターゲット テーブル間で比較します。
ソース テーブルとターゲット テーブルで以下の値のいずれかが同一でない場合は、ジョブは失敗します。
- 各列に以下の値がある列の数:
- 自動列
- 文字タイプ
- 圧縮
- 制限
- 制限数
- 小数の小数部桁数
- 小数の全桁数
- デフォルト値
- 形式
- 識別列タイプ
- 長さ
- 名前
- NULL受入れ可能
- ストアド プロシージャ パラメータ タイプ
- スキーマ
- ストレージ形式
- TS列タイプ
- タイプ
- UDT名
- UPPER CASEフラグ
- MAPSプロパティ
- マップとコロケートのプロパティは、これらがソース テーブルとターゲット テーブルの両方に存在する場合に一致する必要はありません。
- マップ パラメータとコロケート パラメータがジョブにある場合、これらのパラメータはターゲット テーブルマップおよびコロケート パラメータと一致する必要があります。
- PTIプロパティ
- ソース テーブルとターゲット テーブルの両方がPTIテーブルである必要があります。
- PTIプロパティ(timezero、tsFlags、timeBucketValue)は、ソース テーブルとターゲット テーブルの両方で一致する必要があります。
ビューのDDLの比較
ビューのDDLの比較では、ソース ビューの列とソース テーブルの列が比較されます。ソース ビューとターゲット ビューの定義は比較されません。ビューからデータをコピーする際にDDLを比較するには、ビューのcopyData属性をtrueに設定する必要があります。
スコープ レベルと優先順位ロジック
次のテーブルに、各スコープ レベルに含まれるオブジェクト、およびスコープ レベルで異なる値を指定した場合に適用される優先順位ロジックを示します。複数のスコープ レベルでDDL比較フラグを設定した場合は、最も小さなスコープの優先順位が一番高くなります。例えば、<compare_ddl>要素をデータベース レベルでtrueに設定し、ジョブ レベルでfalseに設定した場合は、指定したデータベース内のすべてのテーブルおよびビューのDDLが比較されます。
スコープ レベル | 比較されるオブジェクト | 優先順位 |
---|---|---|
オブジェクト | 指定されたテーブルまたはビュー | 最高 |
データベース | 指定されたデータベース内のすべてのテーブルおよびビュー | より高い |
ジョブ | ジョブのすべてのテーブルおよびビュー | 高 |
デーモン | 特定のデーモンで処理されるすべてのテーブルおよびビュー | 低 |
上記のスコープ レベルの値が指定されなかった場合は、デフォルトのロジックが適用されます。
コピーされるオブジェクト | デフォルトのロジック |
---|---|
個々のテーブルおよびビュー | True。 DDLの比較が実行されます。 |
データベース全体 | False。 DDLの比較は実行されません。 |