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 の使用法 » データベースの作成 » データベース・オブジェクトの使用 » マテリアライズド・ビューの操作

 

手動ビューから即時ビューへの変更

マテリアライズド・ビューを作成すると、再表示タイプは手動になります。ただし、即時タイプに変更できます。手動から即時に変更するには、ビューが未初期化状態である (データを含まない) 必要があります。ビューが作成された直後でまだリフレッシュされていない場合は、未初期化状態になっています。ビューにデータがある場合は、そのデータをトランケートする必要があります。また、ビューにはユニーク・インデックスも必要で、即時ビューに必要な制限に従う必要があります。即時ビューの追加の制限を参照してください。

即時ビューは、再表示タイプを変更するだけで、いつでも手動に変換できます。

次の手順では、手動ビューを即時ビューに変更する方法について説明します。これらの手順のいずれかを実行する前に、手動ビューにユニーク・インデックスがあり、未初期化状態であることを確認してください。そして、必要に応じて sa_materialized_view_can_be_immediate システム・プロシージャを使用して、再表示タイプを即時にするための条件を確認します。sa_materialized_view_can_be_immediate システム・プロシージャを参照してください。

♦  手動ビューを即時ビューに変更するには、次の手順に従います (Sybase Central の場合)。
  1. DBA 権限のあるユーザとして、またはそのビューとビューが参照するすべてのテーブルの所有者として、データベースに接続します。

  2. 左ウィンドウ枠で、[ビュー] をダブルクリックします。

  3. マテリアライズド・ビューを右クリックして、[プロパティ] を選択します。

  4. [再表示タイプ] フィールドで、[即時] を選択します。

  5. [OK] をクリックします。

♦  手動ビューを即時ビューに変更するには、次の手順に従います (SQL の場合)。
  1. DBA 権限のあるユーザとして、またはそのビューとビューが参照するすべてのテーブルの所有者として、データベースに接続します。

  2. 再表示タイプを即時に変更するには、ALTER MATERIALIZED VIEW ... IMMEDIATE REFRESH 文を実行します。

次の手順では、即時ビューを手動ビューに変更する方法について説明します。

♦  即時ビューを手動ビューに変更するには、次の手順に従います (Sybase Central の場合)。
  1. ビューの所有者として、または DBA 権限のあるユーザとして、データベースに接続します。

  2. 左ウィンドウ枠で、[ビュー] をダブルクリックします。

  3. マテリアライズド・ビューを右クリックして、[プロパティ] を選択します。

  4. [再表示タイプ] フィールドで、[手動] を選択します。

  5. [OK] をクリックします。

♦  即時ビューを手動ビューに変更するには、次の手順に従います (SQL の場合)。
  1. ビューの所有者として、または DBA 権限のあるユーザとして、データベースに接続します。

  2. 再表示タイプを手動に変更するには、ALTER MATERIALIZED VIEW ... MANUAL REFRESH 文を実行します。

次の例は、マテリアライズド・ビューを作成し、初期化します。即時ビューにはユニーク・インデックスが必要なため、次にユニーク・インデックスを追加します。再表示タイプを変更する際にビューにデータがあってはいけないため、ビューはトランケートされます。最後に、再表示タイプが変更されます。

CREATE MATERIALIZED VIEW EmployeeConfid44 AS
   SELECT EmployeeID, Employees.DepartmentID, 
          SocialSecurityNumber, Salary, ManagerID, 
          Departments.DepartmentName, Departments.DepartmentHeadID
     FROM Employees, Departments
     WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid44;
CREATE UNIQUE INDEX EmployeeIDIdx 
   ON EmployeeConfid44 ( EmployeeID );
TRUNCATE MATERIALIZED VIEW EmployeeConfid44;
ALTER MATERIALIZED VIEW EmployeeConfid44 
   IMMEDIATE REFRESH;

次の文は、再表示タイプを手動に戻します。

ALTER MATERIALIZED VIEW EmployeeConfid44 
   MANUAL REFRESH;
警告

この例を実行し終わったら、作成したマテリアライズド・ビューを削除してください。そうしないと、他の例を試すときに、基本となるテーブル Employees および Departments に対するスキーマ変更ができなくなります。有効化されている従属マテリアライズド・ビューを持つテーブルのスキーマは変更できません。マテリアライズド・ビューの削除を参照してください。

参照