![]() |
grant a nivel de campo
Hola amigos....
Fijense q estoy trabajando con Firebird 2.0 y quisiera saber si esta sentencia la soporta la version de firebird que uso:
Lo anterior lo consulte en este foro, pero para Oracle.... De antemano les comento que hice algunas pruebas en un usuario que tenia asignado el privilegio UPDATE para todos los campos, pero necesito que algunos no los pueda modificar. Para esto le quite el privilegio UPDATE al usuario, luego ejecute la instruccion:
Pero la aplicación me envía un mensaje diciendome que el data set no puede realizar UPDATE...o algo asi. El caso es que el grant por campo (columna) no lo esta realizando...me hara falta algo mas ??? Alguien me puede ayudar en esto?. GRACIAS !!! |
Hola mRoman.
Un script de ejemplo que crea el usuario "PEREZ", le da derechos de lectura, inserción y modificación sólo sobre el campo "FECHA" en la tabla "TABLA":
Saludos :) |
Ok...agradezco tu ejemplo ecfisa. Estoy haciendo los mismo....pero como que algo no funciona bien, porque me sale un error. En fin probaré tu ejemplo. Por cierto que version de firebird usas?....
|
Apartir de que version de Firebird se pueden ejecutar ese tipo de sentencias SQL ecfisa?
|
Hola mRoman.
Cita:
La sintáxis del ejemplo corresponde a la versión 2.5 Saludos :) |
Te agradezco ecfisa que te hayas fijado.
Fijate que a pesar de que tengo la version 2.0 la sentencia se ejecuta y no marca error, pero obviamente no realiza lo que quiero.....probaré con la versión 2.5 Saludos |
Hola mRoman.
También podes crear roles, darles privilegios y luego asignárselo a uno o mas usuarios. Todos los usuarios pertenecientes al mismo rol, heredan los privilegios del mismo. Ejemplo:
Luego:
Saludos :) |
Gracias ecfisa.
Probe con la versión 2.5 y no hace lo que quiero. Mejor explico el "ambiente" en el cual estoy trabajando (Creo que por aqui debí haber empezado): Tengo un DATASET ligado a un DbGRID, aqui tengo algunas columnas habilitadas y otras no, pero es aqui donde NO QUIERO que el usuario modifque el campo en cuestion. Ejecuto la siguiente sentencia SQL en el ScripExecutive del IbExpert:
(Omito el "campo2", porque ese quiero que NO tenga el privilegio UpDate) Lo ejecuto y NO me marca ningún error.... Me voy a la aplicación, y trato de modificar en el DbGrid en el campo, pero al momento que habro el DataSet (DataSet1.Open), me envia el siguiente mensaje:
El mensaje anterior me lo envia desde Delphi, porque ejecuto desde ahi la aplicación....y este otro mensaje ejecutando directamente desde el EXE:
En otras palabras, parece ser que TODA la tabla no la puedo modificar !!!....y de hecho si, no puedo modificar otras columnas del grid, que obviamente están habilitadas para ser modificadas directamente.... Creen que hace falta algo ?..... Saludos. |
Hola mRoman.
En este caso el problema no lo ocasiona Firebird sino el componente, que cuando aplica el update lo hace sobre todo el registro. De ese modo incluye aquellos campos sobre los que el usuario no posee el privilegio de la acción y de allí que se eleva la excepción. Saludos :) |
Hola de nuevo.
Para demostrar con un ejemplo lo que te menciono arriba, supongamos una hipotética tabla: y que el excelente y nunca bién ponderado empleado "PEREZ", ha iniciado sesión con estos privilegios:
Si ejecuta esta consulta: No va a tener ningun problema. pero si intenta hacer: va a obtener un bonito mensaje: "No permission for update/write access to column VENTAS.PRECIO" Saludos :) |
Sql
Gracias ecfisa por tus respuestas y una disculpa por no haber contestado antes tus post.
Me queda claro con tus ejemplos lo que esta pasando. Entonces quiere decir que si a tu primer query (el cual lo reescribo nuevamente), le agrego el campo de PRECIO....que pasaria? Si ejecuta esta consulta:
AHORA SI HABRÁ PROBLEMA!?...QUE OTRA SOLUCION PUDIERA EXISTIR....un componente IBQuery por cada campo?....ups.... |
| La franja horaria es GMT +2. Ahora son las 21:53:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi