Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

黄舟
Freigeben: 2017-02-17 11:34:22
Original
1383 Leute haben es durchsucht

-- 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;
Nach dem Login kopieren

 

-- Eine Datenzeile in die Variable einlesen

FETCH cur_oalid INTO p_oalid;
Nach dem Login kopieren

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

 WHILE STOP <> 1 DO 
         -- select p_id;
         START TRANSACTION;
Nach dem Login kopieren

                                                                       🎜>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;
Nach dem Login kopieren

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)!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!