搬入元の表の種別 | 搬入先のRDエリアの定義 | 定義の実行可否 | エラー後のpdexpの処理※ | ||
---|---|---|---|---|---|
表格納用RDエリア | 表に定義したインデクスの格納RDエリア | 表 | インデクス | ||
共用表 | 共用RDエリア | 共用RDエリア | ○ | ○ | 該当しません。 |
共用RDエリア | 非共用RDエリア | ○ | △ | 処理を中断し,表定義は無効となります。 | |
非共用RDエリア | 共用RDエリア | △ | × | 処理を中断します。 | |
非共用RDエリア | 非共用RDエリア | △ | × | ||
非共用表 | 共用RDエリア | 共用RDエリア | △ | × | |
共用RDエリア | 非共用RDエリア | △ | × | ||
非共用RDエリア | 共用RDエリア | ○ | △ | 処理を中断し,表定義は無効となります。 | |
非共用RDエリア | 非共用RDエリア | ○ | ○ | 該当しません。 |
生成された定義系SQL | 改行条件 |
---|---|
CREATE TABLE |
|
CREATE INDEX |
|
CREATE ALIAS | 1行が80バイトを超える場合は,80バイトごと |
COMMENT | 1行が80バイトを超える場合は,80バイトごと |
CREATE VIEW |
|
CREATE PROCEDURE |
|
CREATE TRIGGER |
|
表定義時の参照動作 | -wオプション | 被参照表を使用するSQLオブジェクトの扱い | 備考 |
---|---|---|---|
CASCADE | 指定あり | 参照表と被参照表の整合性を保つために,内部的にトリガが定義されます。このとき,SQLオブジェクトが作成されるため,被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが無効になります。 | 被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが既にある場合,そのSQLオブジェクトは無効な状態となっています。そのため,参照表を搬入した後に,SQLオブジェクトを再作成する必要があります。 |
指定なし | 被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが無効になります。そのため,そのSQLオブジェクトを再作成しないと,参照表と被参照表の整合性が保たれないため,CREATE TABLEのSQLエラーとなります。 | - | |
RESTRICT | 指定あり | 被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが有効な場合,被参照表の行を更新又は削除してしまうため,整合性が保てなくなります。そのため,そのSQLオブジェクトは無効となります。 | 被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが既にある場合,そのSQLオブジェクトは無効な状態となっています。そのため,参照表を搬入した後に,SQLオブジェクトを再作成する必要があります。 |
指定なし | 被参照表を使用する関数,手続き,及びトリガのSQLオブジェクトが無効になります。そのため,そのSQLオブジェクトを再作成しないと,参照表と被参照表の整合性が保たれないため,CREATE TABLEのSQLエラーとなります。 | - |
pdexpで搬入をする場合,定義系SQLが作成され,その定義系SQLが実行されます。このとき,定義系SQLには,省略時仮定値の構文も作成されるため,SQL文の最大長2メガバイトを超えることがあります。
定義系SQLが2メガバイトを超えた場合の修正例を次に示します。ここでは,CREATE TABLEを例に説明します。
CREATE TABLE "root"."T1"
("C1" INTEGER NOT NULL,
"C2" CHAR(100),
:
:
"C98" VARCHAR(100)
) IN (("RDUSER01") "C100" < 1500
("RDUSER02"))
PCTFREE=(30,10)
FOREIGN KEY ("C1","C2") REFERENCES "root"."T2"
ON DELETE RESTRICT ON UPDATE RESTRICT CONSTRAINT CNST01
; ........................................................1
ALTER TABLE "root"."T1"
ADD "C99" INTEGER
; ........................................................2
ALTER TABLE "root"."T1"
ADD "C100" INTEGER NOT NULL
; ........................................................2
CREATE TABLE "root"."T1"
("C1" INTEGER NOT NULL,
"C2" CHAR(100),
:
:
"C98" VARCHAR(100)
"C99" INTEGER ...............上記手順3.で追加
"C100" INTEGER NOT NULL .....上記手順3.で追加
) IN (("RDUSER01") "C100" < 1500
("RDUSER02"))
PCTFREE=(30,10)
FOREIGN KEY ("C1","C2") REFERENCES "root"."T2"
CONSTRAINT CNST01 .........上記手順の2.で一部分を削除
;
pdsetupコマンドで文字コードとしてutf-8を選択した場合,pdexpの入力ファイルには,BOMを持つファイルを使用できることがあります。pdexpでのBOMを持つファイルの使用可否を次の表に示します。なお,pdexpの入力ファイルとしてBOMを持つファイルを使用しても,BOMは読み飛ばされます。また,pdexpで出力されるファイルにはBOMは付きません。
表9-1 pdexpでのBOMを持つファイルの使用可否(UTF-8の場合)
オプション | 入力ファイル | BOMを持つファイルの使用 |
---|---|---|
-l | 搬出ファイル | × |
-f | 制御文ファイル | ○ |