Mysql MySql запрос с условием и возвратом результата.

Ntp

Новичок
Здравствуйте, не силен в MySql подскажите пожалуйста как правильно отправить запрос в БД.
В таблице clients есть 3 поля: ip (PRIMARY - уникальное), name, time
Нужно отправить запрос так чтоб он делал следующее.. Если в таблице есть ip = 192.168.0.1 и time > 12345 то ничего не делать и вернуть ответ (Callback) = 0, а если условие выполняется то нужно изменить time на 54321 и изменить name = Коля, после чего вернуть ответ (Callback)= 1;

Необходимо учесть .. что в таблице может быть такой ip, а может и не быть... поэтому важно учесть особенности UPDATE и INSERT при построении запроса. (ON DUPLICATE KEY UPDATE - поможет)

Очень прошу помочь опытных пользователей. Спасибо.
 

fixxxer

К.О.
Партнер клуба
что в таблице может быть такой ip, а может и не быть
А если нету - то вставить, так? Тогда псеводокодом типа того
PHP:
$result = 1;
begin;
select for update where ip = ...;
если нашлось {
   если time > 12345 {
       $result = 0;
   } иначе {
      update;
   }
} иначе {
   insert;
}
commit;
return $result;
 

Yoskaldyr

"Спамер"
Партнер клуба
Я наверное не совсем правильно понял задачу ибо если надо чтобы 1 запрос и вставлял и обновлял данные и возвращал ответ Callback = 1 или 0, то это какое-то извращение, и это разве что хранимкой.
Но если просто надо вставить / обновить данные то все можно 1 запросом INSERT ON DUPLICATE KEY UPDATE, но определить по возврату что именно было обновление или вставка - никак.
Хотя конечно более правильно делать все отдельными запросами в пределах одной транзакции и читабельность выше и логику любую можно добавить
 
Последнее редактирование:
Сверху