Заблокировать запись - MySQL

Формулировка задачи:

Добрый день! Пол дня читаю про блокировки, но пока нормально не получается сделать ( MYSQL InnoDB Есть запрос который выдает ip (таблица sockstable), из тех которые сейчас не в онлайне (таблица onlinesocks) SELECT sockstable.ip FROM sockstable WHERE sockstable.ip NOT IN (SELECT onlinesocks.online FROM onlinesocks) limit 1 После чего этот ip добавляется в таблицу онлайн (onlinesocks) INSERT INTO onlinesocks (online) VALUES ("'+ip+'") Проблема что с базой работает много клиентов, и они мешают друг другу, несколько успевают сделать запрос Select и добавить в onlinesocks. Как заблокировать запись для чтения? И разблокировать её после INSERT. Желательно что бы при SELECT её даже не видно было, что бы клиент брал следующий ip который не онлайн. Придумал такой запрос, но проблема что не могу узнать какой ip он выбрал... sockstable.ip как то можно получить из этого запроса? INSERT INTO onlinesocks (online) SELECT sockstable.ip FROM sockstable WHERE sockstable.ip NOT IN (SELECT onlinesocks.online FROM onlinesocks) limit 1

Код к задаче: «Заблокировать запись - MySQL»

textual
INSERT INTO onlinesocks (online) SELECT sockstable.ip FROM sockstable WHERE sockstable.ip NOT IN (SELECT onlinesocks.online FROM onlinesocks) limit 1
SET @lastID := LAST_INSERT_ID()
select online from onlinesocks where id=@lastID

8   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ