Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


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) 共通規則

  1. 定義するパブリックビューの名前には,既に定義されている表(実表及びビュー表)と同じ表識別子を指定できます。ただし,認可識別子を省略して表識別子を使用する場合,UAP実行ユーザが所有している表(実表及びビュー表)がパブリックビューより優先されます。パブリックビューを明示的に修飾する場合は,認可識別子にPUBLICを指定してください。

  2. そのほかの規則は,「CREATE VIEW(ビュー定義)」の共通規則と同じです。

(6) 留意事項

  1. ディクショナリ表の所有者を格納する列(SQL_TABLES表のTABLE_SCHEMA列など)にはPUBLICが設定されます。また,パブリックビューを定義した認可識別子は,SQL_TABLES表のTABLE_CREATOR列に格納します。

  2. パブリックビューを使用したSQL文に対する前処理が有効な間に,使用しているパブリックビューと同じ名前の表(実表及びビュー表)を指定した定義系SQL文を発行すると,定義系SQLは排他待ちの状態になります。

  3. パブリックビューを使用した手続き及びトリガを定義した後で,パブリックビューと同じ名前の表(実表及びビュー表)を定義しても,該当する手続き及びトリガは無効にならないで,パブリックビューを使用した手続き及びトリガとして動作します。ただし,その手続き及びトリガを再作成した(インデクス無効状態のプロシジャをHiRDBが内部的に再作成する場合も含む)場合,パブリックビューと同じ名前の表(実表及びビュー表)を使用した手続き及びトリガとして動作します。

  4. パブリックビューの削除は,DROP PUBLIC VIEWで行います。

(7) 使用例

  1. 在庫表(ZAIKO)から商品名(SNAME)がソックスの行で商品コード(SCODE),在庫量(ZSURYO),単価(TANKA)の列で構成されるパブリックビュー(PVZAIKO1)を定義します。なお,列の並びは,商品コード,在庫量,単価の順とします。

      CREATE PUBLIC VIEW PVZAIKO1
          AS SELECT SCODE,ZSURYO,TANKA
          FROM ZAIKO
          WHERE SNAME = N'ソックス'