Hola, soy nueva usando Mirth.
Estoy creando un canal con un origen database reader y un destino de file writer, la situacion es que cuando leo la base de datos me extrae todos los registros cada que se despliega el canal. Necesito únicamente leer los registros que se han guardado en la base de datos recientemente, esta es mi consulta SQL en el source del canal:
set @ttl = (select max(id) from tabla_auxiliar);
set @total= (select total_registros FROM tabla_auxiliar WHERE id=@ttl);
set @ttl2 = (select max(id) from ADPISO);
set @total2 = (select count(id) from ADPISO);
set @busqueda = @total2-@total;
select * from ADPISO
ORDER BY TNYCVEPISO DESC LIMIT (@busqueda);
Tabla_auxiliar: Me hace un conteo de los registros que tiene la tabla ADPISO (que es de la que extraeré los datos) los guarda en el campo total de registros y lo demás es lo que ya mencioné en la consulta.
Algún consejo o indicarme en que estoy mal.
Gracias de antemano.
Hola, wendyglez:
Por lo que se ve, parece que siempre se realiza la misma consulta SQL, por tanto cada vez que se despliegue el canal se volverán a procesar siempre los mismos registros.
Para evitar que eso pase se me ocurren dos formas:
- Utilizar una columna de base de datos para marcar los registros que ya has procesado. En un destino database writer se deberá marcar la entrada que se esté procesando en ese momento, así como modificar el database reader para que ignore las entradas ya marcadas.
- Anotar en algún otro sitio (por ejemplo otra tabla, o incluso un fichero) el último ID que se haya procesado e introducirlo de forma dinámica en la consulta SQL para filtrar. Si se opta por esta última opción, recomendaría que la consulta solo devolviese un valor (LIMIT 1)
Un saludo.