mysql(存储过程)update rows status列,然后选择updated rows limit 100

hfwmuf9z  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(268)

正在写入查询。
首先更新100行,然后拉相同的100条记录。
我有多个进程都在寻找同一个数据库,我不想重复,因为非常快和重横切,有些时候它得到了重复,因为多个进程拉相同的记录,试图防止重复问题。
首先,我想将100行的列-(status)从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

请告知。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题