У меня есть таблица с этими столбцами
proxy_id
(первичный ключ) proxy
(IP прокси) current_requests
(количество текущих запросов, обработанных прокси с момента его last_cool_down
) total_requests
(количество запросов, выполненных этим прокси за время его жизни) last_used
(дата и время в последний раз этот прокси был использован) last_cool_down
(дата и время последнего перезапуска этого прокси)
После использования прокси я запускаю эту команду (очевидно, с текущей датой и время, но мы будем считать, что текущая дата и время 2020-04-28 13:10:03
)
UPDATE proxy_table
SET
current_requests = current_requests + 1,
total_requests = total_requests + 1,
last_used = '2020-04-28 13:10:03',
last_cool_down = '2020-04-28 13:10:03'
WHERE proxy_id = 1
Моя проблема в том, что я ВСЕГДА должен обновлять current_requests
и last_used
независимо от того, что. Однако в приведенном выше коде это условие не учитывается. Если current_requests + 1 == 20
, то current_requests = 0
и last_cool_down = '2020-04-28 13:10:03'
. Как я могу это сделать?
Так что, по сути, что-то вроде этого
UPDATE proxy_table
if (current_requests + 1 == 20) {
SET current_requests = 0;
SET last_cool_down = '2020-04-28 13:10:03';
else {
SET current_requests = current_requests + 1;
}
SET total_requests = total_requests + 1;
SET last_used = '2020-04-28 13:10:03';
WHERE proxy_id = 1;
Я хочу сделать это одним оператором sql, вместо того, чтобы выполнять 2 оператора. Моя попытка этого не сработала:
UPDATE proxy_table
SET
CASE
WHEN current_requests + 1 = 20
THEN current_requests = 0, last_cool_down = '2020-04-28 13:10:03'
ELSE current_requests = current_requests + 1
total_requests = total_requests + 1,
last_used = '2020-04-28 13:10:03'
WHERE
proxy_id = 1