Puede utilizar SQL para crear una vista en las tablas y clases de entidad en una geodatabase corporativa.
El ejemplo de este tema muestra cómo crear una vista simple en IBM DB2 para restringir el acceso de usuario a columnas específicas. El ejemplo se basa en una tabla con la siguiente definición:
CREATE TABLE employees(emp_id integer not null, name varchar(32), department smallint not null, hire_date date not null);
Otorgar privilegios en la tabla
Si el usuario que crea la vista no es el propietario de la tabla o las tablas en las que se basa la vista, el propietario de la tabla debe otorgarle al creador de la vista como mínimo el privilegio de selección en la tabla.
En este ejemplo, la tabla en la que se basa la vista (empleados) pertenece al usuario gdb. El usuario que crea la vista es el usuario rocket.
db2 => connect to testdb user gdb using gdb.dbg
Database Connection Information
Database server = DB2 9.5.5
SQL authorization ID = GDB
Local database alias = TESTDB
db2 => GRANT SELECT
ON employees
TO USER rocket;
DB20000I The SQL command completed successfully.
Crear una vista
En este ejemplo, el usuario rocket crea una vista en la tabla de empleados para restringir el acceso solo a aquellos registros en los que el departamento es 201:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 9.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.
Otorgar privilegios en la vista
Puede otorgar privilegios en la vista a usuarios específicos sin tener que otorgarle a estos usuarios acceso a la tabla base (empleados). En este ejemplo, al usuario mgr200 se le otorgan privilegios SELECT en la vista, view_dept_201:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 9.7.4
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => GRANT SELECT
ON view_dept_201
TO USER mgr200;
DB20000I The SQL command completed successfully.
Probar privilegios
Inicie sesión como mgr200 y seleccione registros en view_dept_201:
db2 => connect to testdb user mgr200 using mgr200
Database Connection Information
Database server = DB2 9.7.4
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
Como se esperaba, sólo se devuelven los registros para los empleados en el departamento 201.