Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
リモートサーバー上の既存のオブジェクトを表す新しいプロキシテーブルを作成します。
CREATE EXISTING TABLE [owner.]table-name [ column-definition, ... ] AT location-string | variable-name
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 を Microsoft Access ファイル mydbfile.mdb にマッピングします。
CREATE EXISTING TABLE a1 AT 'access;d:\mydbfile.mdb;;a1';
プロキシテーブルを使用する場合、variable-name は SQL 変数 variable-name の内容に置き換えられます。これは、CHAR、VARCHAR、LONG VARCHAR 型でなければなりません。AT 句の変数の使用の詳細については、ディレクトリアクセスサーバーの作成 (Sybase Central の場合)の例 2 を参照してください。
CREATE EXISTING TABLE 文は、外部のロケーションにあるテーブルに対応する、新しいローカルのプロキシテーブルを作成します。CREATE EXISTING TABLE 文は、CREATE TABLE 文の変形です。EXISTING キーワードを CREATE TABLE で使用すると、テーブルがすでにリモートに存在していて、そのメタデータが SQL Anywhere にインポートされるように指定できます。これにより、SQL Anywhere ユーザーにとって可視のエンティティであるように、リモートテーブルが設定されます。SQL Anywhere は、テーブルを作成する前に、外部ロケーションにテーブルが存在するかどうかを確認します。
オブジェクト (ホストデータファイルまたはリモートサーバーオブジェクトのどちらかとして) が存在しない場合、この文は拒否されてエラーメッセージが出力されます。
ホストデータファイルまたはリモートサーバーテーブルのインデックス情報が抽出され、システムテーブル ISYSIDX のローを作成するために使用されます。この情報により、サーバー関係のインデックスとキーが定義されて、クエリオプティマイザーがこのテーブルに存在する可能性のあるすべてのインデックスを考慮できるようになります。
参照整合性制約は、必要に応じてリモートロケーションに渡されます。
column-definitions が指定されていない場合、SQL Anywhere は、リモートテーブルから取得するメタデータからカラムリストを引き出します。column-definitions が指定されている場合、SQL Anywhere は、その column-definitions を検証します。カラム名、データ型、長さ、IDENTITY プロパティ、NULL プロパティについて、次の点がチェックされます。
カラム名が一致しなければなりません (大文字小文字は無視されます)。
CREATE EXISTING TABLE 文のデータ型は、リモートロケーションのカラムのデータ型と一致するか、またはそのデータ型に変換可能でなければなりません。たとえば、ローカルカラムのデータ型が通貨として定義されているのに対して、リモートカラムのデータ型が数値である場合があります。
各カラムの NULL プロパティがチェックされます。ローカルカラムの NULL プロパティがリモートカラムの NULL プロパティと同じではないと、警告メッセージが出力されますが、文はアボートしません。
各カラムの長さがチェックされます。CHAR、VARCHAR、BINARY、VARBINARY、DECIMAL、NUMERIC の各カラムの長さが一致しない場合は、警告メッセージが出力されますが、コマンドはアボートしません。
CREATE EXISTING 文には、実際のリモートカラムリストのサブセットだけをインクルードすることができます。
RESOURCE 権限が必要です。別のユーザーのテーブルを作成するには、DBA 権限が必要です。
Windows Mobile ではサポートされません。
オートコミット。
SQL/2008 ベンダー拡張。
Transact-SQL Adaptive Server Enterprise によってサポートされます。location-string のフォーマットは実装依存です。
リモートサーバー 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 のリモートサーバー demo12 にある Employees テーブルのプロキシテーブル rda_employees を作成します。
CREATE EXISTING TABLE rda_employees AT 'demo12...Employees';