3.20.2 CREATE PUBLIC VIEW(パブリックビュー定義)
(1) 機能
すべてのユーザから,認可識別子で表識別子を修飾しなくても使用できるビュー表(パブリックビュー)を定義できます。
(2) 使用権限
- 実表の所有者
-
自分が所有する実表から,自分が所有するパブリックビューを定義できます。
- ビュー表の所有者
-
自分が所有する実表が基表となるビュー表から,自分が所有するパブリックビューを定義できます。
(3) 形式
CREATE PUBLIC〔READ ONLY〕 VIEW 表識別子 〔(列名〔,列名〕…)〕 AS 導出問合せ式 導出問合せ式::= 問合せ式本体 問合せ式本体::={問合せ指定 |(問合せ式本体) |問合せ式本体{UNION|EXCEPT}〔ALL〕 {問合せ指定|(問合せ式本体)}}
(4) オペランド
PUBLIC,表識別子以外の説明については,「CREATE VIEW(ビュー定義)」と同じです。
(a) PUBLIC
ビュー表をパブリックビューとして定義する場合に指定します。
パブリックビューにすると,同じ内容のビュー表をユーザごとに定義しなくても,一つのビュー表を表識別子だけを指定して複数のユーザで使用できます。
(b) 表識別子
定義するパブリックビューの名前を指定します。
既に定義してあるパブリックビューと同じ名前は指定できません。
(5) 共通規則
-
定義するパブリックビューの名前には,既に定義されている表(実表及びビュー表)と同じ表識別子を指定できます。ただし,認可識別子を省略して表識別子を使用する場合,UAP実行ユーザが所有している表(実表及びビュー表)がパブリックビューより優先されます。パブリックビューを明示的に修飾する場合は,認可識別子にPUBLICを指定してください。
-
そのほかの規則は,「CREATE VIEW(ビュー定義)」の共通規則と同じです。
(6) 留意事項
-
ディクショナリ表の所有者を格納する列(SQL_TABLES表のTABLE_SCHEMA列など)にはPUBLICが設定されます。また,パブリックビューを定義した認可識別子は,SQL_TABLES表のTABLE_CREATOR列に格納します。
-
パブリックビューを使用したSQL文に対する前処理が有効な間に,使用しているパブリックビューと同じ名前の表(実表及びビュー表)を指定した定義系SQL文を発行すると,定義系SQLは排他待ちの状態になります。
-
パブリックビューを使用した手続き及びトリガを定義した後で,パブリックビューと同じ名前の表(実表及びビュー表)を定義しても,該当する手続き及びトリガは無効にならないで,パブリックビューを使用した手続き及びトリガとして動作します。ただし,その手続き及びトリガを再作成した(インデクス無効状態のプロシジャをHiRDBが内部的に再作成する場合も含む)場合,パブリックビューと同じ名前の表(実表及びビュー表)を使用した手続き及びトリガとして動作します。
-
パブリックビューの削除は,DROP PUBLIC VIEWで行います。
(7) 使用例
-
在庫表(ZAIKO)から商品名(SNAME)がソックスの行で商品コード(SCODE),在庫量(ZSURYO),単価(TANKA)の列で構成されるパブリックビュー(PVZAIKO1)を定義します。なお,列の並びは,商品コード,在庫量,単価の順とします。
CREATE PUBLIC VIEW PVZAIKO1 AS SELECT SCODE,ZSURYO,TANKA FROM ZAIKO WHERE SNAME = N'ソックス'