Ejemplo: Crear una vista de base de datos en Informix con el comando sdetable
Puede utilizar el comando sdetable para crear una vista en una geodatabase en IBM Informix. Al hacer esto, la vista se registra en forma automática con ArcSDE.
El ejemplo de este tema muestra cómo se puede utilizar una vista creada con sdetable para restringir el acceso de usuario a datos específicos. 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 datetime not null);
Tenga en cuenta que la tabla contiene una columna de enteros, no nulos que se puede utilizar como un Id. de fila de ArcSDE.
Crear una vista con el comando sdetable
Supongamos que desea que el administrador del departamento 101 vea todas las columnas de la tabla de empleados pero sólo las filas para los empleados en el departamento 101. Utilice sdetable para crear una vista con todas las filas para las que el número de departamento es 101. La opción –w especifica la cláusula WHERE de la consulta almacenada con la definición de vista.
sdetable -o create_view -T view_dept_101 -t employees -c 'emp_id,name,department,hire_date' -w "department = 101" -u gdb -p gdb.bdg -i sde:informix -s myidsserver -D testdb
Para obtener más información acerca del comando sdetable, consulte la Referencia sobre el comando de administración.
El comando sdetable define la vista en la tabla de catálogo del sistema sysviews de Informix, como ocurriría si hubiera creado la vista utilizando el Lenguaje estructurado de consultas (SQL). Puede consultar la tabla del sistema sysviews para ver esto.
Otorgar privilegios en la vista
El propietario de 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 mgr100 se le otorgan privilegios selectos en la vista, view_dept_101:
GRANT SELECT ON view_dept_101 TO mgr100;
En este ejemplo, el propietario de la tabla y el propietario de la vista son el mismo usuario. Si fueran diferentes, el propietario de la tabla debería otorgarle privilegios de selección en la tabla al propietario de la vista, además de la capacidad de otorgar selección a otros usuarios. Si el privilegio se otorga mediante SQL, incluya WITH GRANT OPTION en el estamento. Si el privilegio se otorga mediante el comando sdetable con la operación de otorgamiento, se debe especificar la opción (–I) heredada.
Probar privilegios
Inicie sesión como mgr100 y seleccione registros en view_dept_101.
SELECT * FROM gdb.view_dept_101; emp_id name dept hire_date 29 YAN WU 101 04/15/2002 67 LEE VAN 101 11/01/2004 78 SUE CHOO 101 05/31/2005 105 DAN HO 101 10/01/2006 111 ANN ANG 101 12/15/2006 135 BILL BO 101 10/15/2007
Como se esperaba, sólo se devuelven los registros para los empleados en el departamento 101.
Las vistas existen como objetos de esquema, independientemente de las tablas que las completan. En la siguiente consulta, el usuario mgr100 no tiene acceso a la tabla, empleados, de modo que para mgr100 la tabla de empleados no existe.
SELECT * FROM gdb.employees; Invalid object name 'gdb.employees'