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)

 

ALTER MATERIALIZED VIEW 文

この文を使用して、マテリアライズド・ビューを変更します。

構文
ALTER MATERIALIZED VIEW [ owner.]materialized-view-name { 
 SET HIDDEN
| { ENABLE | DISABLE }
| { ENABLE | DISABLE } USE IN OPTIMIZATION 
| { ADD PCTFREE percent-free-space | DROP PCTFREE }
| [ NOT ] ENCRYPTED
[ { IMMEDIATE | MANUAL } REFRESH ]
}
percent-free-space : integer
パラメータ
  • SET HIDDEN 句   SET HIDDEN 句は、マテリアライズド・ビューの定義を難読化するときに使用します。この設定は、元に戻せません。詳細については、マテリアライズド・ビューを隠すを参照してください。

  • ENABLE 句   ENABLE 句は、無効にされたマテリアライズド・ビューを有効にして、データベース・サーバで使用できるようにするときに使用します。この句は、すでに有効になっているビューには影響ありません。この句を使用した後、ビューをリフレッシュして初期化し、ビューが無効にされたときに削除されたすべてのテキスト・インデックスを再作成してください。

  • DISABLE 句   DISABLE 句は、データベース・サーバからビューを使用できないようにします。マテリアライズド・ビューを無効にすると、データベース・サーバはビューのデータとインデックスを削除します。

  • { ENABLE | DISABLE } USE IN OPTIMIZATION 句   この句は、オプティマイザでマテリアライズド・ビューを使用できるようにするかどうかを指定するときに使用します。DISABLE USE IN OPTIMIZATION を指定する場合、マテリアライズド・ビューを使用するのは、明示的にそのビューを参照するクエリを実行する場合のみです。デフォルトは ENABLE USE IN OPTIMIZATION です。オプティマイザによるマテリアライズド・ビューの使用の有効化と無効化を参照してください。

  • ADD PCTFREE 句   各ページに確保する空き領域の割合を指定します。空き領域は、データが更新されたときにローのサイズが増えた場合に使用されます。ページに空き領域がない場合は、ページのローのサイズが増えるたびに、ローを複数のページに分割することが必要になり、ローの断片化が発生します。また、パフォーマンス低下の可能性があります。

    percent-free-space の値は、0 ~ 100 までの整数です。0 を指定すると、各ページに空き領域を残さず、各ページを完全にパックします。高い値に設定すると、各ローは単独でページに挿入されます。PCTFREE が設定されない場合、または削除された場合、データベースのページ・サイズに応じたデフォルトの PCTFREE 設定が適用されます (ページ・サイズが 4 KB の場合は 200 バイト、2 KB の場合は 100 バイト)。

  • DROP PCTFREE 句   現在のマテリアライズド・ビューで有効な PCTFREE 設定を削除し、データベースのページ・サイズに応じたデフォルトの PCTFREE を適用します。

  • [ NOT ] ENCRYPTED 句   マテリアライズド・ビュー・データを暗号化するかどうかを指定します。デフォルトで、マテリアライズド・ビュー・データは作成時に暗号化されません。マテリアライズド・ビューを暗号化するには、ENCRYPTED を指定します。マテリアライズド・ビューを復号化するには、NOT ENCRYPTED を指定します。

  • REFRESH 句   REFRESH 句は、マテリアライズド・ビューの再表示タイプを変更するときに使用します。

    • IMMEDIATE REFRESH   IMMEDIATE REFRESH 句は、手動ビューを即時ビューに変更するときに使用します。再表示タイプを IMMEDIATE REFRESH に変更するには、手動ビューが有効であり、初期化されていない必要があります。ビューが初期化されているステータスである場合は、TRUNCATE 文を実行して初期化されていないステータスに変更してから、ALTER MATERIALIZED VIEW...IMMEDIATE REFRESH を実行します。TRUNCATE 文を参照してください。

      ビューを IMMEDIATE REFRESH に変更できるようにするため満たす必要のある条件については、即時ビューの追加の制限を参照してください。

    • MANUAL REFRESH   MANUAL REFRESH 句は、即時ビューを手動ビューに変更するときに使用します。

    再表示タイプの詳細については、手動マテリアライズド・ビューと即時マテリアライズド・ビューを参照してください。

    ステータスの詳細については、マテリアライズド・ビューのステータスとプロパティを参照してください。

備考

別のユーザが所有するマテリアライズド・ビューを変更する場合は、所有者を含めて名前を修飾する必要があります (たとえば、GROUPO.EmployeeConfidential)。名前を修飾しなかった場合、データベース・サーバは、ユーザ本人が所有する同名のマテリアライズド・ビューを検索して変更します。見つからない場合は、エラーが返されます。

マテリアライズド・ビューを無効にすると (DISABLE 句)、データベース・サーバがクエリに応答するときにマテリアライズド・ビューを使用できなくなります。また、データとインデックスが削除され、再表示タイプが手動に変わります。通常の従属ビューもすべて無効にされます。

DISABLE 句によって従属ビューも無効になるため、無効化されるビューだけでなく、すべての従属ビューに対する排他アクセスが必要です。マテリアライズド・ビューの有効化と無効化を参照してください。

マテリアライズド・ビューを暗号化するには (ENCRYPTED 句)、データベースでテーブルの暗号化をあらかじめ有効にしておく必要があります。その後、データベースの作成時に指定された暗号化キーとアルゴリズムを使用してマテリアライズド・ビューが暗号化されます。マテリアライズド・ビューの暗号化と復号化を参照してください。

パーミッション

ALTER MATERIALIZED VIEW 文を実行するには、ビューを所有しているか、DBA 権限を持っている必要があります。

DBA 権限がない場合に、マテリアライズド・ビューを即時ビューに変更するときは (ALTER MATERIALIZED VIEW ... IMMEDIATE REFRESH)、ビューとそのすべての参照先テーブルを所有している必要があります。

ユーザが自分のデータを変更するためにマテリアライズド・ビューに対して実行できる操作は、リフレッシュ、トランケート、無効化のみです。ただし、即時ビューは、データベース・サーバによって自動的に更新されます。つまり、一度即時ビューを有効にして初期化すると、データベース・サーバはさらにパーミッションをチェックすることなく、ビューを自動的に管理します。

関連する動作

オートコミット。

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

次の文は、EmployeeConfid88 というマテリアライズド・ビューを作成し、その最適化での使用を無効にします。

CREATE MATERIALIZED VIEW EmployeeConfid88 AS
   SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID,
      Departments.DepartmentName, Departments.DepartmentHeadID
   FROM Employees, Departments
   WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid88;
ALTER MATERIALIZED VIEW GROUPO.EmployeeConfid88 DISABLE USE IN OPTIMIZATION;
警告

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