Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2004
taote taote is offline
Miembro
 
Registrado: feb 2004
Posts: 23
Poder: 0
taote Va por buen camino
Question ¿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.
Responder Con Cita
  #2  
Antiguo 04-05-2004
taote taote is offline
Miembro
 
Registrado: feb 2004
Posts: 23
Poder: 0
taote Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 04-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 04-05-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 05-05-2004
Avatar de Voutarks
Voutarks Voutarks is offline
Miembro
 
Registrado: jul 2003
Ubicación: Islas Canarias
Posts: 118
Poder: 21
Voutarks Va por buen camino
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.
__________________
Emilio J. Curbelo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:19:00.


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
Copyright 1996-2007 Club Delphi