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() > d_date and unit.status = 1;
-- 2.在临时表中添加主键索引
ALTER TABLE unit_tmp ADD PRIMARY KEY (`id`);
-- 3.将临时表中的数据更新为⽋费状态
UPDATE unit_tmp SET status = 2;
-- 4.级联更新
mysql视图和存储过程
UPDATE unit
INNER JOIN unit_tmp ON unit.id = unit_tmp.id
SET unit.status = unit_tmp.status;
END
⼆、执⾏存错过程
CALL update_edge_charge_status();
通过建⽴临时表⽤主键索引来批量更改表信息,安全系数较⾼,运⾏速度快,不会影响原表的使⽤。