MySQL (хранимая процедура) обновляет столбец состояния строк, затем выбирает обновленные строки. Ограничение 100 - PullRequest
0 голосов
/ 13 июня 2018

Запись QUERY.

Сначала обновите 100 строк, затем извлеките те же 100 записей.

У меня работает несколько процессов, все ищут одну и ту же базу данных. Мне не нужно дублирование из-за очень быстрой и тяжелой работы.В некоторых случаях он дублируется из-за того, что несколько процессов извлекают одни и те же записи, пытаясь предотвратить проблему дублирования.

Сначала я хочу обновить столбец строки 100 - (состояние) с 0 на 1, чтобы другие процессы не увидели ихзаписи, то я хочу вытащить те же обновленные записи.

CREATE DEFINER=`devdba`@`%` PROCEDURE `getQueueRows`()
BEGIN

SET autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;

UPDATE  Queue
SET status = 1
WHERE status = 0
ORDER BY id ASC
LIMIT 100;

SELECT  * FROM Queue 
where 
status = 1 AND
UPDATED < now();
COMMIT;

END

Пожалуйста, сообщите.

...