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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2004
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Question Variables en Firebird

Hola, estoy implementando una aplicación utilizando firebird 1.5 y a la hora de controlar que es lo que hace cada usuario, utilizo para guardar un disparador (triger) en la tabla que se ha modificado, ahora el problema, los usuarios que deben de guardar no son los que se utilizan en firebird sino que son propios (utilizo unicamente el sysdba), que ocurre que en mi aplicación tengo un usuario que esta trabajando, pero en la BD a la hora de guardar o borrar en una tabla no puedo saber quien lo ha hecho.

¿Hay alguna variable en Firebird que pertenezca a la sesion de trabajo en la que esté un usuario, y donde pueda almacenar un dato?, digo esto porque creo que sería la solución más optima, o sea abrir la conexion con la BD, almacenar en una variable unica para ese usuario el nombre suyo y cuando haga un borrado o lo que sea, en los disparadores utilizar dicha variable.

un saludo y muchas gracias
Responder Con Cita
  #2  
Antiguo 17-06-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Cita:
Empezado por asirvent
¿Hay alguna variable en Firebird que pertenezca a la sesion de trabajo en la que esté un usuario, y donde pueda almacenar un dato?,
De las notas de la versión 1.5 (por cierto, en la traducción colaboró nuestro compañero Marc Guillot):

Cita:
Empezado por Notas de la versión Firebird 1.5
(1.5) Nuevas variables contextuales
Dmitry Yemanov
CURRENT_CONNECTION y CURRENT_TRANSACTION

Cada una de estas variables contextuales devuelve el identificador del sistema de la conexión activa o del contexto de transacción actual, respectivamente. El tipo de dato que devuelven es INTEGER. Se encuentran disponibles en DSQL y PSQL. Puesto que estos valores se almacenan en la página de cabecera de la base de datos, serán reasignados tras hacer un restore de la misma.
Código SQL [-]
/* Sintaxis */
  CURRENT_CONNECTION CURRENT_TRANSACTION 

/* Ejemplos */
  SELECT CURRENT_CONNECTION FROM RDB$DATABASE; 
  NEW.TXN_ID = CURRENT_TRANSACTION; 
  EXECUTE PROCEDURE P_LOGIN(CURRENT_CONNECTION);

Saludos
Responder Con Cita
  #3  
Antiguo 18-06-2004
asirvent asirvent is offline
Miembro
 
Registrado: may 2003
Posts: 48
Poder: 0
asirvent Va por buen camino
Ok, con lo que me comentas he podido saber la conexión que tiene cada usuario al conectarse e implementar lo que yo queria.

Ahora bien, hay alguna forma desde firebird de saber que conexiones con su CURRENT_CONNECTION hay abiertas.

un saludo
Responder Con Cita
  #4  
Antiguo 18-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cuando tu usuario hace login dentro de tu aplicación, podes insertar en una tabla su nombre de usuario asociado al CURRENT_CONNECTION, y borrarlo cuando cierra la aplicación.

De esta manera, un simple lookup sobre esta tabla te dará el nombre de usuario.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



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 19:11:49.


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