スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
CREATE FOREIGN TABLE(外部表定義)
機能
外部表を定義します。
定義情報はHiRDBに作成されます。外部サーバへの外部表の定義はできません。
使用権限
- スキーマを所有し,かつ外部サーバ定義を所有するユーザ
- 自分が所有する外部サーバ定義で定義した,外部サーバの表に対応する外部表を定義できます。
形式
CREATE FOREIGN TABLE 〔認可識別子.〕表識別子
(列名 データ型〔列一般オプション〕
〔,列名 データ型〔列一般オプション〕〕…)
SERVER 外部サーバ名
〔OPTIONS (オプション名 'オプション値' 〔,オプション名 'オプション値'〕…)〕
列一般オプション::=
OPTIONS (オプション名 'オプション値' 〔,オプション名 'オプション値'〕…)
|
オペランド
- 認可識別子
- 定義する外部表の所有者になるユーザの認可識別子を指定します。
- 省略した場合は,CREATE FOREIGN TABLEを実行するユーザの認可識別子が仮定されます。
- 表識別子
- 定義する外部表の名称を指定します。
- 一つの認可識別子に対して,同じ表識別子は複数指定できません。
- 列名 データ型〔列一般オプション〕〔,列名 データ型〔列一般オプション〕〕…
- 列名
- 表を構成する列の名称を指定します。
- 列の名称には,対応する外部サーバの表に定義した列名と同じものを指定します。同一の列名は複数指定できません。
- データ型
- 列のデータ型を指定します。
- 指定できるデータ型は,HiRDBの既定義型です。外部サーバの表の列のデータ型と互換性のある既定義型を指定してください。互換性のないデータ型を指定した場合は,エラーとなることがあります。データ型の互換性については,「付録C 外部表を利用する場合のデータ型の対応関係」を参照してください。
- 次のデータ型は指定できません。
- 定義長が256バイト以上のCHAR,VARCHAR,MCHAR,及びMVARCHAR
- 文字集合を指定したCHAR,VARCHAR
- 定義長が128文字以上のNCHAR及びNVARCHAR
- BLOB
- 定義長が256バイト以上のBINARY
- 列一般オプション::=OPTIONS (オプション名 'オプション値' 〔,オプション名 'オプション値'〕…)
列に対するオプションを指定します。
次のオプション名及びオプション値を指定できます。同一名称のオプションは二つ以上指定できません。
- COLLATING_SEQUENCE {'SAME'|'DIFFERENT'}
- 該当する列が文字列型の場合,外部サーバの該当する列の文字コード及び照合順序がHiRDBと等しいかどうかを指定します。
- 省略した場合はSAMEが仮定されます。
- このオプションは,文字列型(CHAR,VARCHAR,NCHAR,NVARCHAR,MCHAR,及びMVARCHAR)の列に対してだけ指定できます。
- SAME
- 文字コード及び照合順序が等しい場合に指定します。
- DIFFERENT
- 文字コード又は照合順序のどちらかが異なる場合,又はどちらも異なる場合に指定します。
- DIFFERENTを指定した場合,HiRDBは文字列型に対する大小比較(<,<=,>,>=),BETWEEN述語,集合関数(MIN,MAX),及びORDER BYの処理をします。外部のDBとHiRDBとで文字コードセット,又は照合順序が異なる場合にSAMEを指定すると,該当する列に対する文字列の大小比較(<,<=,>,>=),BETWEEN述語,集合関数(MIN,MAX),及びORDER BYの結果が異なることがあります。
- TRAILING_SPACE {'YES'|'NO'}
- 可変長文字列型(VARCHAR,NVARCHAR,及びMVARCHAR)の列の場合,該当する列に格納する文字列の後ろに,半角空白文字列又は全角空白文字列があるかどうかを指定します。
- 省略した場合はNOが仮定されます。
- このオプションは,可変長文字列型(VARCHAR,NVARCHAR,及びMVARCHAR)の列に対してだけ指定できます。
- 外部のDBに格納されているデータと異なるオプション値を指定した場合,文字列比較の結果が異なることがあります。
- YES
- 該当する列に格納する文字列の後ろに,半角空白文字列又は全角空白文字列がある場合,又はその可能性がある場合に指定します。
- YESを指定して,Hub最適化情報定義のpd_hub_opt_trailing_spcオペランドに2を指定している場合,文字列の比較(=,!=,<>,<,<=,>,>=),限定述語,BETWEEN述語,IN述語,集合関数(MIN,MAX),SELECT DISTINCT指定,DISTINCT集合関数,UNION ALLを除く集合演算,GROUP BY,及びORDER BYのうち,仕様の差異がある部分の処理をHiRDBがします。ただし,同時にCOLLATING_SEQUENCEオプションにDIFFERENTを指定する場合は,文字列の比較(=,!=,<>,<,<=,>,>=),BETWEEN述語,集合関数(MIN,MAX),及びORDER BYの処理は,常にHiRDBでします。Hub最適化情報定義については,マニュアル「HiRDB Version 8 システム定義」を参照してください。
- NO
- 該当する列に格納する文字列の後ろに,半角空白文字列又は全角空白文字列がない場合に指定します。
- NULLABLE {'YES'|'NO'}
- 列にナル値を許すかどうかを指定します。
- 省略した場合はYESが仮定されます。
- 外部のDBの列と異なる指定をした場合,HiRDBの性能が悪くなったり,処理結果が不正になったりすることがあります。外部表へのアクセスに関する性能設計については,マニュアル「HiRDB External Data Access Version 8」を参照してください。
- YES
- ナル値を許す場合に指定します。
- Hub最適化情報定義のpd_hub_opt_nullableオペランドに2を指定し,かつ文字列型の列にYESを指定した場合,該当する列を含む連結演算(||)はHiRDBが処理します。
- NO
- ナル値を許さない場合(非ナル値制約の場合)に指定します。NOを指定した場合,その列にはNOT NULL WITH DEFAULTが仮定されます。
外部表がある外部サーバの名称(CREATE SERVERで定義した名称)を指定します。
- OPTIONS (オプション名 'オプション値' 〔,オプション名 'オプション値'〕…)
外部表に対する次のオプションを指定します。なお,一つのオプションは重複して指定できません。
スキーマ名,及び外部サーバ上の表識別子は,それぞれ最大30バイトで指定できます。
- SCHEMA 'スキーマ名'
- 外部表からアクセスする表のスキーマ名を指定します。
- 外部サーバがHiRDBの場合,スキーマ名は認可識別子に相当します。
- スキーマ名を省略した場合,認可識別子で指定した名称が仮定されます。スキーマ名及び認可識別子を省略した場合は,CREATE FOREIGN TABLEを実行するユーザの認可識別子が仮定されます。
- 外部表からアクセスする表が外部サーバでパブリックビューとして定義されている場合は,スキーマ名にPUBLICを指定してください。
- TABLE '外部サーバ上の表識別子'
- 外部表からアクセスする表の,外部サーバ上で定義された名称を指定します。
- 省略した場合,表識別子で指定した名称が仮定されます。
共通規則
- 列は,一つの外部表に最大30,000個定義できます。
- CREATE FOREIGN TABLEを実行したユーザには,該当する外部表に対してアクセス権限が与えられます。
留意事項
- CREATE FOREIGN TABLEでは,外部サーバ側への表の定義はできません。
- CREATE FOREIGN TABLEは,OLTP下のX/Openに従ったUAPからは指定できません。
- 外部サーバ上の読み取り専用のビュー表を外部表として定義した場合,その外部表に対する行の挿入,更新,及び削除はできません。これらのSQLを実行しようとした場合,外部サーバへのアクセスがエラーになることがあります。このような表に対しては,ユーザにUPDATE,INSERT,及びDELETE権限を与えないでください。
- 外部サーバ上の表で非ナル値制約があり,かつデフォルト値の指定がない列を外部表に定義しなかった場合,その外部表に対するINSERT文の実行はできません。INSERT文を実行しようとした場合,外部サーバへのアクセスがエラーになることがあります。このような表に対しては,ユーザにINSERT権限を与えないでください。外部表に対して行を挿入する場合は,NOT NULL指定があり,かつデフォルト値の指定がない列を外部表の定義に含めるようにしてください。
- CREATE FOREIGN TABLEの実行で与えられたアクセス権限を,該当する外部表に対応する外部サーバ上の表に対して与えることはできません。外部サーバ上のアクセス権限のない表を外部表として定義した場合,その外部サーバ上の表へのアクセスはエラーとなることがあります。外部サーバ上で持っていないアクセス権限は,ほかのユーザに与えないようにしてください。
- CREATE FOREIGN TABLEで指定する次の定義長は,外部サーバに定義した表と同じにしてください。同じでない場合,外部サーバでエラーとなることがあります。
- DECIMAL型の精度と位取り
- TIMESTAMP型の精度
- 固定長文字列型
- 可変長文字列型
- 固定長各国文字列型
- 可変長各国文字列型
- 固定長混在文字列型
- 可変長混在文字列型
- BINARY型
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.