Ayuda - no se como hacer este proceso
Soy nuevo en MySql y tengo que realizar los cambios a mi sistema para que realice lo siguiente y al no conocer bien mysql me encuentro desorientado
le expongo mi caso para ver si alguien me puede dar una idea de como hacerlo
- Tengo una tabla de CLIENTES que puede tener entre 500 a 6000 registros que se dan de alta todos los dias, con datos para hacer llamadas telefonicas y cada registro de esa tabla es unico una vez procesado ese registro ya no hay que volver a procesarlo
- por otra parte estan los usuarios (entre 30 y 300 ) del sistema al conectarse el sistema TIENE QUE BUSCAR UN REGISTRO DE CLIENTES y hacer la llamada telefonica y procesar los datos despues buscar otro libre y hacer lo mismo hasta que no queden registros
aca biene el problema
se conectan al sistema entre 30 y 300 usuarios y el problema es como hacer para que 2 o mas usuarios del sistema NO TOMEN EL MISMO DATO, o sea el sistema cuando arranca tiene que buscar el primer registro de clientes que este sin usar y que no se este usando en ese momento por otro usuario, debido a la gran cantidad de usuarios del sistema
esto tiene que funcionar sin atascar la base
yo habia pensado en un procedimiento almacenado
pedir_datos y al hacerlo bloquear ese registro a los otros y devolver el dato al usuario no se si podra devolver un cursor
bueno desde ya muchas gracias
le expongo mi caso para ver si alguien me puede dar una idea de como hacerlo
- Tengo una tabla de CLIENTES que puede tener entre 500 a 6000 registros que se dan de alta todos los dias, con datos para hacer llamadas telefonicas y cada registro de esa tabla es unico una vez procesado ese registro ya no hay que volver a procesarlo
- por otra parte estan los usuarios (entre 30 y 300 ) del sistema al conectarse el sistema TIENE QUE BUSCAR UN REGISTRO DE CLIENTES y hacer la llamada telefonica y procesar los datos despues buscar otro libre y hacer lo mismo hasta que no queden registros
aca biene el problema
se conectan al sistema entre 30 y 300 usuarios y el problema es como hacer para que 2 o mas usuarios del sistema NO TOMEN EL MISMO DATO, o sea el sistema cuando arranca tiene que buscar el primer registro de clientes que este sin usar y que no se este usando en ese momento por otro usuario, debido a la gran cantidad de usuarios del sistema
esto tiene que funcionar sin atascar la base
yo habia pensado en un procedimiento almacenado
pedir_datos y al hacerlo bloquear ese registro a los otros y devolver el dato al usuario no se si podra devolver un cursor
bueno desde ya muchas gracias
creo que enconttraste tu solucion, pero no esta demas comentarte cual fue mi solucion.
Mira yo hice algo similar, pero lo que hice fue marcar el registro antes de consultarlo, para no trabajar a travez de una excepcion, entonces primero creo un codigo unico del operador,
seria id_operador + fechahoraAtencion
entonces el algoritmo para la funcion
update llamadas set atendido =fechaHora, operador = operadorId where llamada_id
= (select min(llamada_id) from llamadas where operador is null)
commit;
alli marque el registro, luego puedo hacer todas las operaciones que quiera.
select llamadaId into salida from
llamadas where atendido = fechaHora and operador = operadorId;
return salida;
entonces desde la aplicaicon a una variable se le asigna
la fecha
paramFecha= date
'llamo al procedimiento
idllamada = tomarllamada(paramFecha, globalOperador);
Mira yo hice algo similar, pero lo que hice fue marcar el registro antes de consultarlo, para no trabajar a travez de una excepcion, entonces primero creo un codigo unico del operador,
seria id_operador + fechahoraAtencion
entonces el algoritmo para la funcion
update llamadas set atendido =fechaHora, operador = operadorId where llamada_id
= (select min(llamada_id) from llamadas where operador is null)
commit;
alli marque el registro, luego puedo hacer todas las operaciones que quiera.
select llamadaId into salida from
llamadas where atendido = fechaHora and operador = operadorId;
return salida;
entonces desde la aplicaicon a una variable se le asigna
la fecha
paramFecha= date
'llamo al procedimiento
idllamada = tomarllamada(paramFecha, globalOperador);
Estimado axelopez.
De acuerdo, ese es el algoritmo basico, en tu caso cambias el flag de atencion por la fecha y el operador (esto tiene por finalidad que quien lea entienda la diferencia entre lo que hizo gustavo y lo que aplicaste tu).
Sls.
Hg.
De acuerdo, ese es el algoritmo basico, en tu caso cambias el flag de atencion por la fecha y el operador (esto tiene por finalidad que quien lea entienda la diferencia entre lo que hizo gustavo y lo que aplicaste tu).
Sls.
Hg.
No sé si he entendido bien tu problema però se me ocurre que puedes hacer algunas modificaciones en las tablas. Podrias añadir un nuevo campo de tipo NUMBER llamado, por ejemplo, \\\\\\\\\\\\\\\"Accedido\\\\\\\\\\\\\\\" a la tabla CLIENTES. Ese campo, en principio, estaria inicializado a cero en todos los registros. Cuando un usuario del sistema accede al registro correspondiente de la tabla CLIENTES, primero debe comprobar el valor de CLIENTES.Accedido; si el mencionado campo contiene el valor cero, el usuario puede leer el registro si no accede a otro registro.
Salutacions des de València
Salutacions des de València