MySQL(存储过程)更新行状态列,然后选择更新的行限制100

时间:2018-06-13 13:52:05

标签: mysql sql database stored-procedures mysql-error-1064

写作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

请告知。

0 个答案:

没有答案