Ejemplo: Crear una vista de base de datos en Oracle con SQL
Puede utilizar SQL para crear una vista en las tablas y clases de entidad en una geodatabase corporativa.
El ejemplo en este tema muestra cómo crear una vista simple en Oracle para restringir el acceso del usuario a columnas específicas. El ejemplo se basa en una tabla con la siguiente información:
CREATE TABLE employees ( emp_id number(38) unique not null, name varchar2(32), department number 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. Si el propietario de la vista necesita poder otorgarle privilegios en la vista a otros usuarios, el propietario de la tabla debe otorgarle al propietario de la vista la capacidad para otorgar privilegios a otros usuarios.
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. Además, el usuario rocket debe otorgar privilegios en la vista a otros usuarios. Por lo tanto, el usuario gdb debe otorgarle al usuario rocket el privilegio de selección en la tabla de empleados e incluir WITH GRANT OPTION para que rocket pueda otorgarle a otros usuarios los privilegios SELECT en la vista.
conn gdb/gdb.bdg GRANT SELECT ON gdb.employees TO rocket WITH GRANT OPTION;
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:
CREATE VIEW view_dept_201 AS SELECT (emp_id,name,department,hire_date) FROM gdb.employees WHERE department = 201;
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:
conn rocket/nopeeking GRANT SELECT ON rocket.view_dept_201 TO mgr200;
Probar privilegios
Inicie sesión como mgr200 y seleccione registros en view_dept_201:
conn mgr200/topsecret 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, solo se devuelven los registros para los empleados en el departamento 201.