Запрет MySQL выбрать ту же строку - PullRequest
0 голосов
/ 09 мая 2019

Я разработал веб-сервис с PHP Slim Framework, который выбирает строку в базе данных MySQL.Этот веб-сервис вызывается пользователем, и фактически, если два пользователя вызывают веб-сервис одновременно, возвращается одна и та же строка.

Я пытался с оператором «FOR UPDATE», но он не работает.Я использую MySQL 8 с движком InnoDB.

$sql = "SELECT tasks.id, tasks.idEmail
FROM tasks
LEFT JOIN results ON tasks.idResult = results.id
WHERE tasks.idAgent = $agentId AND results.personnal = 1 AND tasks.callbackHour <= CURTIME() AND tasks.callbackDate <= CURDATE() AND tasks.idCampaign = $idCampaignToDistribute AND tasks.idResult <> 9999
UNION
SELECT tasks.id, tasks.idEmail
FROM tasks
LEFT JOIN results ON tasks.idResult = results.id
WHERE results.personnal = 0 AND results.recall = 1 AND tasks.callbackHour <= CURTIME() AND tasks.callbackDate <= CURDATE() AND tasks.idCampaign = $idCampaignToDistribute AND tasks.idResult <> 9999
UNION
SELECT tasks.id, tasks.idEmail
FROM tasks
WHERE tasks.idCampaign = $idCampaignToDistribute AND tasks.idResult = 0 $customFilter
LIMIT 1";

$stmt = $db->query($sql);
$idsToDistribute = $stmt->fetchAll(PDO::FETCH_OBJ);

Теперь я бы хотел, чтобы веб-сервис не выбирал ту же строку.Как я могу это сделать?

Есть идеи?

...