3.3.1 ALTER VIEW文の指定形式および規則
ビュー表を再作成します。
次に示す場合に,ALTER VIEW文を実行してビュー表を再作成してください。
-
ビュー表の無効化を解除する場合
ビュー表の無効化要因を対策したあとに,ALTER VIEW文を実行してビュー表を再作成すると,ビュー表の無効化が解除されます。
-
ビュー表の無効化要因がわからなくなってしまった場合
ビュー表の無効化要因を対策していない状態でALTER VIEW文を実行すると,ALTER VIEW文がエラーになります。そのとき出力されるエラーメッセージを参照すると,ビュー表が無効化された要因を特定できます。
- 重要
-
ALTER VIEW文ではビュー表の定義を変更できません。ビュー表の定義を変更する場合は,DROP VIEW文でいったんビュー表を削除したあとに,CREATE VIEW文でビュー表を再定義してください。
- 〈この項の構成〉
(1) 指定形式
ALTER VIEW文::=ALTER VIEW 表名 RECREATE
(2) 指定形式の説明
- ●表名
-
再作成するビュー表の表名を指定します。表名の指定規則については,「6.1.5 名前の修飾」の「(2) 表名の指定形式」を参照してください。
次の表は指定できません。
-
実表
-
ディクショナリ表
-
システム表
-
- ●RECREATE
-
ビュー表を再作成する場合に指定します。
(3) 実行時に必要な権限
ALTER VIEW文を実行する場合,CONNECT権限およびスキーマ定義権限が必要になります。
(4) 規則
-
HADBサーバに接続した認可識別子と,ビュー表のスキーマ名が異なる場合,ALTER VIEW文がエラーになります。
-
再作成対象のビュー表に依存するビュー表が定義されている場合でも,ALTER VIEW文を実行するとビュー表が再作成されます。このとき,再作成したビュー表に依存するビュー表は無効化されます。
-
ALTER VIEW文でビュー表を再作成しても,再作成したビュー表に依存するビュー表に対するアクセス権限に影響はありません。
-
ALTER VIEW文に指定したビュー表は,有効か無効かに関係なく必ず再作成されます。
-
ALTER VIEW文でビュー表を再作成した場合,ビュー表の定義によってはビュー表の列数や列名が変わることがあります。例えば,次のようなケースが該当します。
ビュー表V1の定義例:
CREATE VIEW "V1" AS SELECT * FROM "T1" WHERE "C1">100
-
ビュー表の列数が増えるケース
1.CREATE VIEW文でビュー表V1を定義する
2.ALTER TABLE文で基表T1に,例えばC5列を追加する
3.ALTER VIEW文でビュー表V1を再作成する
この場合,ビュー表V1にC5列が追加されるため,ビュー表の列数が増えます。
-
ビュー表の列名が変わるケース
上記の操作の2.で,例えば,C2列の列名をALTER TABLE文で変更した場合,ALTER VIEW文でビュー表V1を再作成すると,ビュー表V1のC2列の列名が変わります。
-
-
ALTER VIEW文でビュー表を再作成する際,基表に対するアクセス権限の内容がビュー表の定義時から変更※されている場合,再作成したビュー表に対するアクセス権限の依存権限が取り消されることがあります。
- 注※
-
次に示すどちらかの変更が該当します。
-
付与権付きのアクセス権限から,付与権なしのアクセス権限に変更されている場合
-
付与権付きのアクセス権限から,アクセス権限なしに変更されている場合
-
再作成したビュー表に対するアクセス権限の依存権限が取り消される例を次に示します。
(例)
- 1.
-
HADBユーザAは,表X.T1に対する付与権付きのSELECT権限を持っていて,表X.T1を基表としたビュー表A.V1を定義します。
- 2.
-
HADBユーザAは,ビュー表A.V1に対するSELECT権限をほかのHADBユーザに付与します。ほかのHADBユーザに付与したSELECT権限は依存権限となります。
- 3.
-
HADBユーザAが持っている,表X.T1に対する付与権付きのSELECT権限が取り消されます。このとき,表X.T1を基表としたビュー表A.V1が無効化されます。
- 4.
-
ビュー表A.V1の無効化を解除するために,表X.T1に対する付与権なしのSELECT権限をHADBユーザAに付与します。表X.T1に対するアクセス権限が,1.のビュー表A.V1の定義時に持っていた付与権付きのSELECT権限から,付与権なしのSELECT権限に変更されています。
- 5.
-
ALTER VIEW文を実行してビュー表A.V1を再作成します。
4.でSELECT権限が付与権なしのSELECT権限に変更されているため,2.でほかのHADBユーザに付与した依存権限であるSELECT権限が取り消されます。
(5) 例題
- 例題
-
店舗表のビュー表(VSHOPSLIST)が無効化されたため,ALTER VIEW文を実行してVSHOPSLISTの無効化を解除します。
ALTER VIEW "VSHOPSLIST" RECREATE