主キーが使用可能な有効範囲なしREF
列によって、システム生成および主キーの両方の型のREF
を参照できます。このようなREF
列をロードするための構文は、システム生成OID型のREF
列または主キーREF
列にロードする場合と同じです。例11-13および例11-14を参照してください。
主キーが使用可能な有効範囲なしREF
列をロードする場合は、次の制限が適用されます。
単一表へのロード中は、この列からシステム生成または主キーのいずれかの型のREF
のみを参照できます。両方は参照できません。両方の型の参照を試行すると、データ行が拒否され、参照表名が無効であることを示すエラー・メッセージが表示されます。
この列に有効範囲なし主キーREF
をロードする場合、単一表へのロード中は、1つのオブジェクト表のみ参照できます。複数の有効範囲なし主キーREF
(いくつかのREFはオブジェクト表Xを指し、別のREFはオブジェクト表Yを指す)をロードする場合、次のいずれかの操作を実行する必要があります。
単一表へのロードを2回実行します。
有効範囲なし主キーREF
のオブジェクト表名など、WHEN
句によってデータのいくつかの要素が指定されている複数のINTO
TABLE
句を使用して、ロードを1回実行します。次に例を示します。
LOAD DATA INFILE 'data.dat' INTO TABLE orders_apk APPEND when CUST_TBL = "CUSTOMERS_PK" fields terminated by "," ( order_no position(1) char, cust_tbl FILLER char, cust_no FILLER char, cust REF (cust_tbl, cust_no) NULLIF order_no='0' ) INTO TABLE orders_apk APPEND when CUST_TBL = "CUSTOMERS_PK2" fields terminated by "," ( order_no position(1) char, cust_tbl FILLER char, cust_no FILLER char, cust REF (cust_tbl, cust_no) NULLIF order_no='0' )
これらの方法のいずれも使用しない場合、データ行が拒否され、参照されている表の名前が無効であることを示すエラー・メッセージが表示されます。
コレクション内の有効範囲なし主キーREF
は、SQL*Loaderではサポートされていません。
このREF
列にシステム生成のREF
をロードする場合は、「システム生成OID型のREF列」で説明されている制限も適用されます。
このREF
列に主キーREF
をロードする場合は、「主キーREF列」で説明されている制限も適用されます。
注意:
主キーが使用可能な有効範囲なしREF
列の場合、SQL*Loaderでは、(REF
ディレクティブまたはデータ行のいずれかから)最初の有効な解析済オブジェクト表が取得され、オブジェクト表のOID型を使用してその単一表へのロードで参照可能なREF
型が決定されます。