mysql创建批量更新存储过程和执行存错过程
一、创建批量更新存储过程
CREATE PROCEDURE update_edge_charge_status() BEGIN /* * 更新门禁收费状态. */ -- 1.创建临时表 CREATE TEMPORARY TABLE unit_tmp AS SELECT unit.id,unit.status FROM unit unit WHERE NOW() > unit.end_date and unit.status = 1; -- 2.在临时表中添加主键索引 ALTER TABLE unit_tmp ADD PRIMARY KEY (`id`); -- 3.将临时表中的数据更新为欠费状态 UPDATE unit_tmp SET status = 2; -- 4.级联更新 UPDATE unit INNER JOIN unit_tmp ON unit.id = unit_tmp.id SET unit.status = unit_tmp.status; END
二、执行存错过程
CALL update_edge_charge_status();
通过建立临时表用主键索引来批量更改表信息,安全系数较高,运行速度快,不会影响原表的使用。