Buscar este blog

jueves, 30 de octubre de 2014

GRANT SELECT SOBRE UNA VISTA EN ORACLE

Supongamos que tenemos tres esquemas como lo diagrama la figura anterior:

  1. Esquema_1: Este contiene dos tablas llamadas “Tabla_1” y “Tabla_2”
  2. Esquema_2: Se desea crear una vista llamada “Vista_1” la cual utilice las tablas “Tabla_1” y “Tabla_2” del “Esquema_1”
  3. Esquema_3: En este se desea poder utilizar la vista “Vista_1” del esquema “Esquema_2”
Inicialmente para poder crear la vista en el “Esquema_2” se debe de ejecutar los GRANT correspondientes para el permitir que este esquema pueda consultar en “Esquema_1”. Por lo que estando en “Esquema_1” se debe de ejecutar las siguientes sentencias:

GRANT SELECT ON Esquema_1.Tabla_1 TO Esquema_2 WITH GRANT OPTION;
GRANT SELECT ON Esquema_1.Tabla_2 TO Esquema_2 WITH GRANT OPTION;

Con las dos instrucciones anteriores ya será posible crear la vista en “Esquema_2”, por medio de la siguiente instrucción:

CREATE VIEW Vista_1 AS
SELECT *
FROM Esquema_1.Tabla_1 t1, Esquema_2.Tabla_2 t2
WHERE t1.campo_a = t2.campo_c;
Con esto se habrá creado la vista en el “Esquema_2”.
Ahora se desea dar permisos a “Esquema_3” para que pueda consumir la vista, para esto se debe de ejecutar las siguientes sentencias desde “Esquema_2”:
GRANT SELECT ON Esquema_2.Vista_1 TO Esquema_3;
Y con esto se podrá consultar la Vista_1 desde Esquema_3. Espero que este post les haya sido de ayuda.