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 の使用法 » データベースの作成 » データベース・オブジェクトの使用 » ビューの操作 » ビューの依存性

 

依存性とスキーマ変更

テーブルやビューに定義したスキーマを変更しようとする場合、従属ビューに対して変更による影響があるかどうかをデータベース・サーバが検討する必要があります。スキーマ変更操作の例を次に示します。

  • テーブル、ビュー、マテリアライズド・ビュー、またはカラムの削除

  • テーブル、ビュー、マテリアライズド・ビュー、またはカラムの名前変更

  • カラムの追加、削除、または変更

  • カラムのデータ・タイプ、サイズ、または NULL 入力属性の変更

  • ビュー、またはテーブルのビューの依存性の無効化

スキーマ変更操作を試みると、次のイベントが発生します。

  1. データベース・サーバは、変更するテーブルやビューに直接的または間接的に依存するビューのリストを生成します。DISABLED ステータスのビューは無視されます。

    いずれかの従属ビューがマテリアライズド・ビューである場合、要求は失敗し、エラーが返され、残りのイベントは発生しません。従属したマテリアライズド・ビューを明示的に無効にしてから、スキーマ変更操作を続行してください。マテリアライズド・ビューの有効化と無効化を参照してください。

  2. データベース・サーバは、変更するオブジェクトとすべての従属した通常のビューに対して、排他スキーマ・ロックを取得します。

  3. データベース・サーバはすべての従属した通常のビューのステータスを INVALID に設定します。

  4. データベース・サーバはスキーマ変更操作を実行します。操作が失敗すると、ロックは解放され、従属した通常のビューのステータスは VALID にリセットされます。さらにエラーが返され、残りの手順は発生しません。

  5. データベース・サーバは従属した通常のビューを再コンパイルし、成功した場合は各ビューのステータスを VALID に設定します。いずれかの通常のビューでコンパイルが失敗した場合も、そのビューのステータスは INVALID のままです。INVALID である通常のビューに対する以後の要求により、データベース・サーバはビューを再コンパイルしようとします。それらの試行に失敗した場合は、INVALID ビューまたはそのビューが依存するオブジェクトを変更する必要があります。

依存性とスキーマ変更 (通常のビュー)
  • 通常のビューは、マテリアライズド・ビューを含め、テーブルやビューを参照できる。

  • テーブルまたはビューのスキーマを変更すると、データベースはすべての参照元の通常ビューを自動的に再コンパイルしようとする。

  • ビューまたはテーブルを無効にするか削除すると、すべての従属した通常のビューが自動的に無効になる。

  • ALTER TABLE 文の DISABLE VIEW DEPENDENCIES 句を使用して、従属した通常のビューを無効にできる。

依存性とスキーマ変更 (マテリアライズド・ビュー)
  • マテリアライズド・ビューは、ベース・テーブルだけを参照する。

  • 有効なマテリアライズド・ビューが参照している場合は、ベース・テーブルに対するスキーマ変更は許可されない。ただし、テーブルに外部キーを追加することはできる (ALTER TABLE、ADD FOREIGN KEY など)。

  • テーブルを削除する前に、すべての従属マテリアライズド・ビューを無効にするか削除する必要がある。

  • ALTER TABLE 文の DISABLE VIEW DEPENDENCIES 句は、マテリアライズド・ビューには影響しない。マテリアライズド・ビューを無効にするには、ALTER MATERIALIZED VIEW ... DISABLE 文を使用する必要がある。

  • マテリアライズド・ビューを無効にすると、ALTER MATERIALIZED VIEW ... ENABLE 文を実行するなどして、再度明示的に有効にする必要がある。