Ver Mensaje Individual
  #5  
Antiguo 27-03-2021
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Angel.Matilla Ver Mensaje
Lo que sí me has dado una pista interesante que tengo que probar y es comprobar el estado del usuario.
¡Era demasiado fácil! He modificado el trigger así:
Código SQL [-]
CREATE TRIGGER CONECTADO
ACTIVE ON 
  CONNECT
POSITION 2
AS
BEGIN

   -- Primero, se borran las filas de los usuarios que no estan conectados
   -- pero aparecen como conectados
    DELETE FROM Conexion
     WHERE CON_IDECON NOT IN (SELECT MON$ATTACHMENT_ID FROM MON$ATTACHMENTS WHERE MON$STATE = 1);

   -- Segundo, se trata de insertar una fila a la tabla CONEXION.
   -- Como la tabla CONEXION tiene una restriccion UNIQUE KEY, un usuario
   -- no se podra conectar mas de una vez al mismo tiempo
    INSERT INTO Conexion (CON_IDENTI, CON_IDECON, CON_NOMBRE, CON_TIMEST)
                  VALUES (0, CURRENT_CONNECTION, CURRENT_USER, CURRENT_TIMESTAMP);
END
En teoría así sólo borraría aquellas filas de la tabla Conexion que en MON$ATTACHMENTS estuvieran con estado 0 ya que eso significaría que el usuario está inactivo. Pero no, sigue borrando la fila del usuario ANGEL a pesar de que no debería. Sin embargo, si ejecuto ese trozo del trigger (DELETE) desde SQLManager no borra ninguna entrada. CAda vez lo entiendo menos.
Responder Con Cita