mysql临时表使用实例 Aug 29, 2013 最近公司业务上要开发一个虚拟电话号码的选号业务 主要的场景是从号码池选取一批备选号码,这些号码一段时间内被锁定供用户从中选择一个开户,一段时间之后未被开户的号码重新回到号码池备选号码中。 考虑使用数据库的锁来处理业务号码选号,标记号码被选等业务。 选号的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 这样就实现需求