Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   grant / revoke en oracle a nivel columna (https://www.clubdelphi.com/foros/showthread.php?t=36423)

avmm2004 11-10-2006 14:04:46

grant / revoke en oracle a nivel columna
 
Tengo un programa hecho en delphi que hace el mantenimiento de una tabla. Hasta ahí todo bien. Si el usuario que se conecta a la base de datos no tiene permisos de select o update o insert lo controlo desde delphi perfectamente. Pero el problema se presenta cuando el usuario tiene permisos, por ejemplo de update sobre la tabla y yo quiero que no me actualice / modifique determinadas columnas de la tabla. Las combinaciones son muchas y lo que no quiero es ponerlas en programa (en codigo) ya que cuando se cree un usuario nuevo, tengo que cambiar programa. En otras bases de datos, por ejemplo postgres, existe el Grant y el revoke a nivel de tabla y tambien a nivel de columna. ¿ Existe algo parecido en Oracle ? ¿ Es otro concepto ?.
Se me ha ocurrido hacerlo a nivel de triggers (before update) pero es una lata tambien. He pensado en las views pero son de lectura y complican el tema. Se les ocurre alguna forma.??? Gracias. :confused:

lucasarts_18 12-10-2006 15:55:12

Por lo menos hasta la versión 9i solo tiene permiso sobre tabla completa y no sobre columnas específicas. :(

Desconozco si la versión 10g posea ésta característica..

Hasta Luego--

jr_ewing 12-10-2006 16:48:00

Se me ocurre que se pueda crear un role que se le asigne únicamente a los usuarios que pueden modificar la tabla sin restricciones, y que en el trigger BEFORE UPDATE se levante una exception si el usuario intenta modificar alguna de las columnas restringidas y no tiene ese role, controlando contra la view USER_ROLE_PRIVS.

avmm2004 14-10-2006 12:08:55

Rebuscando en la documentación encontré que si se puede.
Código SQL [-]
grant update (campo, campo, campo) on tabla to user
.

Gracias a todos.

lucasarts_18 14-10-2006 17:41:49

Cita:

Empezado por avmm2004
Rebuscando en la documentación encontré que si se puede.

Código SQL [-]grant update (campo, campo, campo) on tabla to user

.

Gracias a todos.

¿En qué versión ? , Había búscado en la versión 9i, pero no había encontrado nada :(

avmm2004 14-10-2006 17:55:33

Yo hice las pruebas en la 9i. De todas formas la documentación la encontré en un libro de Mcgraw hill del administrador de la 8i. Estaba mencionado muy por encima, como un esquema de los que podía funcionar y de hecho funciona. Ahora me queda la parte del error que me devuelve oracle. Siempre que intento, por ejemplo, actualizar una columna sobre el que no tiene permiso me devuelve el error de permisos insuficientes al delphi (lógico ¿no?) pero no me devuelve el campo que lo produjo. No todo es perfecto. Tendré que seguir mirando o alguien sabe algo de eso ????:confused:


La franja horaria es GMT +2. Ahora son las 21:04:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi