mysql临时表使用实例
最近公司业务上要开发一个虚拟电话号码的选号业务
主要的场景是从号码池选取一批备选号码,这些号码一段时间内被锁定供用户从中选择一个开户,一段时间之后未被开户的号码重新回到号码池备选号码中。
考虑使用数据库的锁来处理业务号码选号,标记号码被选等业务。
选号的sql如下:
START TRANSACTION;
drop table if exists tmp_table;
CREATE TEMPORARY TABLE tmp_table
(SELECT virtual_number from number_pool
where ... and state=0 limit 10 for update);
UPDATE number_pool SET state=1 WHERE virtual_number in (select * from tmp_table);
select * from tmp_table;
DROP TABLE tmp_table;
commit;
state=0 表示号码备选 state=1 表示号码正在被用户选号
在crontab中写一个脚本 定时检查号码池备选号码的备选修改时间 超过一定时间的把状态从state 1改为0 这样就实现需求