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();

 

通过建立临时表用主键索引来批量更改表信息,安全系数较高,运行速度快,不会影响原表的使用。 

posted @ 2020-11-02 14:35  孤独二世  阅读(391)  评论(0编辑  收藏  举报