SQL を使用して、エンタープライズ ジオデータベース内のテーブルおよびフィーチャクラスのビューを作成できます。
このトピックの例では、IBM Db2 内に単純なビューを作成して、ユーザーからのアクセスを特定の列に制限します。この例は、以下の定義を持つテーブルに基づいています。
CREATE TABLE employees(emp_id integer not null, name varchar(32),
department smallint not null, hire_date date not null);
テーブルに関する権限の付与
ビューを作成するユーザーがビューの基になるテーブルの所有者でない場合、テーブルの所有者はビューの作成者に少なくともテーブルの SELECT 権限を付与する必要があります。
この例では、ビューの基になるテーブル (employees) はユーザー gdb が所有しています。ビューを作成しているユーザーは、ユーザー rocket です。
db2 => connect to testdb user gdb using gdb.dbg
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = GDB
Local database alias = TESTDB
db2 => GRANT SELECT
ON employees
TO USER rocket;
DB20000I The SQL command completed successfully.
ビューの作成
この例では、ユーザー rocket が employees テーブルを基にビューを作成し、部署番号が 201 のレコードのみにアクセスを制限しています。
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => CREATE VIEW view_dept_201
AS SELECT emp_id, name, department, hire_date
FROM gdb.employees
WHERE department = 201;
DB20000I The SQL command completed successfully.
ビューに対する権限の付与
ビューの権限を特定のユーザーに付与することができます。また、これらのユーザーにベース テーブル (employees) へのアクセスを許可する必要はありません。この例では、ユーザー mgr200 は ビュー view_dept_201 の SELECT 権限を付与されています。
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => GRANT SELECT
ON view_dept_201
TO USER mgr200;
DB20000I The SQL command completed successfully.
権限のテスト
mgr200 としてログインし、view_dept_201 のレコードを選択します。
db2 => connect to testdb user mgr200 using mgr200
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = MGR200
Local database alias = TESTDB
db2 => SELECT * FROM rocket.view_dept_201;
emp_id name dept hire_date
112 LOLLI POP 201 06/30/2007
134 VAN CHIN 201 10/15/2007
150 DON GUN 201 03/01/2009
期待どおり、部署 201 の従業員のレコードだけが返されます。