Heim  >  Artikel  >  Datenbank  >  Gespeicherte MySQL-Prozedur -> Migrieren Sie Daten durch Cursordurchquerung und Ausnahmebehandlung in die Verlaufstabelle

Gespeicherte MySQL-Prozedur -> Migrieren Sie Daten durch Cursordurchquerung und Ausnahmebehandlung in die Verlaufstabelle

黄舟
黄舟Original
2017-02-17 11:34:221406Durchsuche

-- Große Tabellendatenmigration,Jeden Morgen1Klicken Sie auf 5Klicken Sie, um auszuführen , Ausführungsintervall beträgt 10 Minuten, alte Daten in die Verlaufstabelle migrieren.

DELIMITER $$
 
USE `dbx`$$
 
DROP PROCEDURE IF EXISTS `pro_xx`$$
 
CREATE  PROCEDURE `pro_xx`()
BEGIN  
   DECLARE p_oalid INT DEFAULT 0;
   DECLARE STOP INT DEFAULT 0; 
   
   DECLARE cur_oalid CURSOR FOR
         SELECToal.id FROM oal_xxx oal WHERE oal.`ymd` <CONCAT(YEAR(DATE_ADD(NOW(),INTERVAL -1 MONTH)),&#39;-&#39;,MONTH(DATE_ADD(NOW(),INTERVAL -1 MONTH )),&#39;-&#39;,
         DAY(DATE_ADD(NOW(),INTERVAL-1 MONTH ))) LIMIT 1000;  
   DECLARE EXIT HANDLER FOR SQLSTATE &#39;02000&#39;  /**包含游标not found*/
   BEGIN
        SET STOP=1;
         INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time)
         SELECT1, &#39;oal_xxx&#39;,&#39;pro_oal_log_move&#39;,CONCAT(&#39;primary key:&#39;,p_oalid,&#39; 游标执行正常结束!&#39;),NOW();       
   END;
       
   DECLARE EXIT HANDLER FOR SQLEXCEPTION
   BEGIN
         SETSTOP=1;
         INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time)
         SELECT2, &#39;oal_xxx&#39;,&#39;pro_oal_log_move&#39;,CONCAT(&#39;primary key:&#39;,p_oalid,&#39; 移动执行失败&#39;),NOW();
   END; 
   
   OPEN cur_oalid;

 

-- Eine Datenzeile in die Variable einlesen

FETCH cur_oalid INTO p_oalid;

-- Damit wird festgestellt, ob der Cursor das Ende erreicht hat

 WHILE STOP <> 1 DO 
         -- select p_id;
         START TRANSACTION;

                                                                       🎜>Lesen Sie die Daten der nächsten Zeile.

   REPLACE INTO oal_xxx_history SELECT oal.*FROM oal_xxx oal WHERE oal.id=p_oalid ;
             DELETE FROM oal_xxx WHERE id=p_oalid;
                          
             -- INSERT INTO t (tid) VALUES (p_tid);
         COMMIT;

Das Obige ist der Inhalt der gespeicherten MySQL-Prozedur --> Daten migrieren Die Verlaufstabelle durch Cursordurchquerung und Ausnahmebehandlung, weitere verwandte Inhalte. Bitte beachten Sie die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn