¿Guardar el punto de control de fila de MySQL en la tabla?
Pregunta
Tengo un pequeño problema y estoy seguro de que hay una manera más conveniente y sencilla de lograr la solución, ¡pero todas las búsquedas arrojan espacios en blanco en este momento!
Tengo una base de datos mysql que se actualiza periódicamente mediante una página php [a través de un trabajo cron], esto agrega o elimina entradas según corresponda.
Mi problema es que también necesito verificar si algún detalle [es decir, el número de teléfono o similar] de la entrada ha cambiado, pero no es posible hacer esto en cada llamada [no solo me parece excesivo, sino que también restringido por un límite de llamadas de API de terceros] Además, esta no es información crítica.
Entonces estaba pensando que sería mejor simplemente verificar una entrada por llamada de página e iterar a través de las filas/enteros con cada llamada de página sucesiva.
¿Cuál sería la mejor manera de hacer esto, es decir, realizar un seguimiento de qué entrada/fila de la tabla se debe verificar a continuación?
Tengo 2 ideas de cómo implementar esto:
1) La identificación de la fila actual podría guardarse en un archivo en el servidor [seguramente no es la mejor manera]
2) se agrega un campo booleano adicional [verificación] a la tabla, se establece en Verdadero en la primera entrada y en falso para todas las demás.Luego en cada página llámalo;Encuentra 'donde check = true' ejecuta la actualización de actualización en esta fila, 'set check = false' 'set [la fila siguiente] check = true'
¿Esta es la mejor manera de hacerlo o alguien tiene alguna sugerencia mejor?
gracias de antemano !
.k
PD perdón por el título
No hay solución correcta
Otros consejos
No estoy seguro si esto es una buena solución, pero si tengo que realizar actualizaciones masivas noche, voy a escribir los cambios a una nueva tabla en blanco, y luego hacer un SQL seleccionar para unirse a las tablas y dime donde son diferentes , y luego hacer otra actualización de SQL como
UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;
Se puede almacenar la fecha y hora que se actualiza una fila de forma implícita utilizando ON UPDATE CURRENT_TIMESTAMP [ http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] o explícitamente en su actualización SQL. Entonces todo lo que tiene que hacer es seleccionar la fila (s) con la marca de tiempo más bajo (utilizando ORDER BY y LIMIT) y tiene la siguiente fila de procesar. Siempre y cuando se asegure de que la marca de tiempo se actualiza cada vez.
por ejemplo. Digamos que utilizó el campo last_polled_on TIMESTAMP para almacenar el tiempo que listó una fila. Sus miradas de inserción como:
INSERT INTO table (..., last_polled_on) VALUES (..., NOW());
Sus actualización se ve así:
UPDATE table SET ..., last_polled_on = NOW() WHERE ...;
Y su selecto para la siguiente fila a las miradas de la encuesta como:
SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;