сохранить строку проверки mySql в таблице? - PullRequest
0 голосов
/ 26 февраля 2010

У меня крошечная проблема, и я уверен, что есть более удобный / более простой способ найти решение, но в данный момент все поиски выбрасывают пустые места!

У меня есть mysqlБД, которая регулярно обновляется страницей php [через cron job], добавляет или удаляет записи по мере необходимости.

Моя проблема в том, что мне также необходимо проверить, не изменились ли какие-либо подробности [например, номер телефона или аналогичные] для записи, но делать это при каждом звонке невозможно [мне кажется, не толькобыть излишним, но я ограничен лимитом вызовов API сторонних производителей] Плюс это не критичная информация.

Поэтому я подумал, что может быть лучше просто проверить одну запись на вызов страницы и выполнять итерацию по строкам/ поступает с каждым последующим вызовом страницы.

Каков наилучший способ сделать это, то есть отслеживать, какую запись / строку в таблице следует проверять следующим?

У меня есть 2 идеи, как это реализовать:

1) Идентификатор текущей строки может быть сохранен в файл на сервере [конечно, не лучшим образом]

2) дополнительное логическое поле [check] добавляется в таблицу,установите значение True для первой записи и false для всех остальных.Тогда на каждой странице называйте это;находит 'где проверка = ИСТИНА' запускает проверку обновления в этой строке, 'установка проверки = ЛОЖЬ' 'устанавливает [следующую строку] проверка = ИСТИНА'

Если это лучший способ сделать это, или кто-нибудь другойесть ли лучшее предложение?

спасибо заранее!

.k

PS извините за заголовок

Ответы [ 2 ]

0 голосов
/ 03 марта 2010

Вы можете сохранить временную метку, что строка обновляется неявно, используя ON UPDATE CURRENT_TIMESTAMP [http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] или явно в вашем обновлении SQL. Затем все, что вам нужно сделать, это выбрать строки с наименьшей временной меткой (используя ORDER BY и LIMIT), и у вас есть следующая строка для обработки. Пока вы гарантируете, что отметка времени обновляется каждый раз.

например. Допустим, вы использовали поле last_polled_on TIMESTAMP для хранения времени, когда вы опрашивали строку. Ваша вставка выглядит так:

INSERT INTO table (..., last_polled_on) VALUES (..., NOW());

Ваше обновление выглядит так:

UPDATE table SET ..., last_polled_on = NOW() WHERE ...;

И ваш выбор для следующей строки для опроса выглядит так:

SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;
0 голосов
/ 26 февраля 2010

Не уверен, что это хорошее решение, но если мне нужно будет делать огромные ночные обновления, я запишу обновления в новую пустую таблицу, затем сделаю выбор SQL, чтобы объединить таблицы и сказать мне, где они отличаются , а затем выполните другое обновление SQL, например

UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...