1. 程式人生 > >MYSQL儲存過程 踩坑

MYSQL儲存過程 踩坑

儲存過程該怎麼寫

  • 這周主要就在使用儲存過程來修復線上資料
  • 使用工具
    • Navicat 建立儲存過程
    • mysql

開始踩坑

  • 一開始不知道儲存過程有專門的操作介面

  • 建立臨時表

  • insert into tmp1(…) select * …

  • 一定使用別名而非表名

  • 對應的欄位一 一對上

  • 有更新和插入的地方 開啟mysql 事務

    • start transaction;
    • commit;
  • 插入臨時表前先 truncate table tmp1;

CREATE   PROCEDURE `p1`()
BEGIN
		start transaction;
	
		#1建立臨時表1
		drop table if exists tmp1;
		create temporary table tmp1(
				p1_order_id int(11),
				p1_prepackage_product_id int(11),
				p1_pl_id int(11), 
				p1_task_id int(11),
				p1_validity int(11));
insert into tmp1 select ....
commit;
END;