Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿Existen variables globales en Firebird? (https://www.clubdelphi.com/foros/showthread.php?t=9863)

taote 04-05-2004 16:42:38

¿Existen variables globales en Firebird?
 
Hola:

Estoy trabajando con Firebird 1.5 y me gustaría hacer uso de una especie de variables globales, que se pudieran inicializar al conectar con la base de datos. Me explico, quiero hacer un trigger que inserte un registro de log cada vez que se modifique una tabla, y quiero que sea un trigger no un procedimiento almacenado. Uno de los campo de la tabla de log es el usuario que ha modificado la tabla, pero no es el usuario de la base de datos, estilo SYSDBA sino el nombre del usuario que entra al programa.

EL problema está en que la base de datos no conoce al usuario, ya que no quiero tener que crear tantos usuarios de la base de datos como usuarios del programa, y he pensado si habia una especie de variables globales donde guardar este dato.

¿Alguien sabe si existe algo parecido? o ¿se le ocurre a alguien una posible solución?

Gracias de antemano.

Un saludo.

taote 04-05-2004 17:00:31

Por ahora me respondo yo mismo. Si no existe puedo crear una tabla con dos campos Atributo y Valor de tipo caracter, y guardar en esta tabla lo que necesite. Por ahora lo veo lo más viable.

__cadetill 04-05-2004 17:03:07

Pos yo de momento lo muevo al foro de Interbase/Firebird ya que parece más una cuestión de BD que de conexión

kinobi 04-05-2004 17:11:04

Cita:

Empezado por taote
EL problema está en que la base de datos no conoce al usuario,

En realidad el servidor (InterBase/Firebird) sí que conoce al usuario. Para conectarte a una base de datos (a través del servidor) tienes que pasarle un par usuario/contraseña. Después, dentro del servidor, existe una variable global (USER ... verifica el nombre exacto en la documentación) que puedes utilizar para saber a quién pertenece esa conexión.

Cita:

Empezado por taote
ya que no quiero tener que crear tantos usuarios de la base de datos como usuarios del programa, y he pensado si habia una especie de variables globales donde guardar este dato.

Esto ya es más complicado. El servidor no sabe nada de las aplicaciones clientes. Si desde éstas te conectas al servidor siempre con un único usuario (pongamos SYSDBA), para el servidor será siempre ese el usuario que está haciendo las conexiones.

Una alternativa, que utilizan muchos compañeros de este foro, es crear su propia gestión de usuarios (con tablas para usuarios y permisos en la propia base de datos).

Saludos.

Voutarks 05-05-2004 10:16:08

Para el tema de establecer permisos segun los usuarios se puede hacer mediante la gestión de usuarios de la base de datos o bien como dice kinobi mediante una tabla de usuarios.

Ahora bien, si es únicamente para el tema que comentas, lo que hago yo personalmente es que al trabajar en una red cliente/servidor, con login de usuarios, es obtener e insertar ese valor desde los clientes obteniendo el login de sistema y nombre de máquina.


La franja horaria es GMT +2. Ahora son las 12:51:25.

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