Cita:
Empezado por JXJ
ya veo.
este escript es usando un usuario que esta dado de alta enl a base de datos de firebird.
yo acostumbro crear usuarios que solo estan registrados en una tabla.
y los mando a llamar.
se podria pasar el usuario de mi tabla en lugar de CURRENT_USER FROM RDB$DATABASE
????
revisando por que como tengo que hacer una aplicacion que tenga varias bases de datos
distribuidas en sucursales. y quieren que sean
replicadas la informacion de una en las otras y de las otras a la una.
no se me hace practivo tener dar de alta usuarios a labase de datos. y
hacer las acutlaizacioens a nivel interno. no se. a lo mejor estoy mal.
|
Para identificar al usuario que lanza una consulta, puedes jugar con la función
rdb$get_context('SYSTEM', 'CLIENT_ADDRESS')
Esta función te devuelve la dirección IP del usuario.
Ahora ya lo único que necesitas es poder identificar a cada usuario a partir de su dirección IP.
Para ello te recomiendo que añadas una nueva tabla de registro, que registre todas las conexiones de usuarios, anotando el usuario que se conecta, la hora y la dirección IP. Puedes utilizar los eventos de base de datos para rellenar automáticamente ese registro.
Ahora cuando quieras consultar cual es el usuario que ha lanzado una consulta, solo tienes que mirar la IP por la que se ha lanzado la consulta (mediante la función que hemos indicado al principio) y consultar el registro de conexiones de usuarios, para ver cual es el último usuario que ha entrado en el sistema por esa dirección IP.
NOTA: El problema lo tendremos si en un mismo equipo (en una misma dirección IP) se abren varias sesiones del programa, con usuarios distintos. Puesto que todas las consultas lanzadas desde ese equipo se asignarían al último de los usuarios que se haya validado desde allí. En ese caso, utiliza :
rdb$get_context('SYSTEM', 'SESSION_ID')
Saludos.