Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CREATE EXISTING TABLE 文

この文は、リモート・サーバ上の既存のオブジェクトを表す新しいプロキシ・テーブルを作成します。

構文
CREATE EXISTING TABLE [owner.]table-name
[ (column-definition, ...) ]
AT location-string
column-definition :
column-name data-type [NOT NULL]
location-string :
  remote-server-name.[db-name].[owner].object-name
| remote-server-name;[db-name];[owner];object-name
パラメータ
  • AT 句   AT 句は、リモート・オブジェクトのロケーションを指定します。AT 句は、デリミタとしてセミコロン (;) をサポートします。セミコロンが location-string 文字列のどこかにある場合、そのセミコロンはフィールド・デリミタです。セミコロンがない場合は、ピリオドがフィールド・デリミタです。セミコロンを使用すると、データベースと所有者の各フィールドにファイル名と拡張子を使用できます。たとえば、次の文は、テーブル a1 を MS Access ファイル mydbfile.mdb にマッピングします。
    CREATE EXISTING TABLE a1
    AT 'access;d:\mydbfile.mdb;;a1';

備考

CREATE EXISTING TABLE 文は、外部のロケーションにあるテーブルに対応する、新しいローカルのプロキシ・テーブルを作成します。CREATE EXISTING TABLE 文は、CREATE TABLE 文の変形です。EXISTING キーワードを CREATE TABLE で使用すると、テーブルがすでにリモートに存在していて、そのメタデータが SQL Anywhere にインポートされるように指定できます。これにより、SQL Anywhere ユーザにとって可視のエンティティであるように、リモート・テーブルが設定されます。SQL Anywhere は、テーブルを作成する前に、外部ロケーションにテーブルが存在するかどうかを確認します。

オブジェクト (ホスト・データ・ファイルまたはリモート・サーバ・オブジェクトのどちらか) が存在しない場合、この文は拒否されてエラー・メッセージが出力されます。

ホスト・データ・ファイルまたはリモート・サーバ・テーブルのインデックス情報が抽出され、システム・テーブル ISYSIDX のローを作成するために使用されます。これにより、サーバ関係のインデックスとキーが定義されて、クエリ・オプティマイザがこのテーブルに存在する可能性のあるすべてのインデックスを考慮できるようになります。

参照整合性制約は、必要に応じてリモート・ロケーションに渡されます。

カラム定義が指定されていない場合、SQL Anywhere は、リモート・テーブルから取得するメタデータからカラム・リストを引き出します。カラム定義が指定されている場合、SQL Anywhere は、そのカラム定義を検証します。カラム名、データ型、長さ、IDENTITY プロパティ、NULL プロパティについて、次の点がチェックされます。

  • カラム名が一致しなければなりません (大文字小文字は無視されます)。

  • CREATE EXISTING TABLE 文のデータ型は、リモート・ロケーションのカラムのデータ型と一致するか、またはそのデータ型に変換可能でなければなりません。たとえば、ローカル・カラムのデータ型が通貨として定義されているのに対して、リモート・カラムのデータ型が数値である場合があります。

  • 各カラムの NULL プロパティがチェックされます。ローカル・カラムの NULL プロパティがリモート・カラムの NULL プロパティと同じではないと、警告メッセージが出力されますが、文はアボートしません。

  • 各カラムの長さがチェックされます。char、varchar、binary、varbinary、decimal、numeric の各カラムの長さが一致しない場合は、警告メッセージが出力されますが、コマンドはアボートしません。

    CREATE EXISTING 文には、実際のリモート・カラム・リストのサブセットだけをインクルードすることができます。

パーミッション

RESOURCE 権限が必要です。別のユーザのテーブルを作成するには、DBA 権限が必要です。

Windows Mobile ではサポートされません。

関連する動作

オートコミット。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

リモート・サーバ server_a にある blurbs テーブルのプロキシ・テーブル blurbs を作成します。

CREATE EXISTING TABLE blurbs
( author_id ID not null,
copy text not null)
AT 'server_a.db1.joe.blurbs';

リモート・サーバ server_a にある blurbs テーブルに対して blurbs という名前のプロキシ・テーブルを作成します。SQL Anywhere は、リモート・テーブルから取得したメタデータからカラム・リストを引き出します。

CREATE EXISTING TABLE blurbs
AT 'server_a.db1.joe.blurbs';

SQL Anywhere のリモート・サーバ demo11 にある Employees テーブルのプロキシ・テーブル rda_employees を作成します。

CREATE EXISTING TABLE rda_employees
AT 'demo11...Employees';