我正在尝试使用 MySQL 创建一个队列(我知道,真丢脸!)。我设置它的方式是进行更新以在队列项目上设置接收器 ID,在更新发生后,我通过接收器 ID 选择更新的项目。
我面临的问题是当我查询更新然后进行选择时,选择查询返回 true 而不是结果集。当提出快速数量的请求时,这似乎会发生。
有谁知道为什么会这样?
提前致谢。
架构:
CREATE TABLE `Queue` (
`id` char(11) NOT NULL DEFAULT '',
`status` varchar(20) NOT NULL DEFAULT '',
`createdAt` datetime DEFAULT NULL,
`receiverId` char(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
出队:
update `'.self::getTableName().'`
set
`status` = 'queued',
`receiverId` = '%s'
where
`status` = 'queued'
and `receiverId` is null
order by id
limit 1;
select
*
from
`'.self::getTableName().'`
where
`receiverId` = \'%s\'
order by id
desc limit 1