×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: SQL
Posted by: userc865b
Added: Aug 30, 2017 2:52 PM
Views: 0
Tags: mysql
creates trigger with cursor
  1. DELIMITER //
  2.  
  3.  
  4.  
  5.  
  6. /* Trigger  for INSERT Dynamische sql wird in Triggern und Functionen nicht unterstützt nur in Prozeduren!!
  7. CURSOR wird nur in Prozeduren und Funktionen definiert!
  8. */
  9. CREATE TRIGGER tr_after_insert_tblPackstuecke AFTER INSERT ON tblPackstuecke FOR EACH ROW BEGIN
  10.    
  11.         DECLARE col_name, is_primary VARCHAR(20);
  12.        
  13.  
  14.         DECLARE done INT DEFAULT 0;
  15.         DECLARE tabelle VARCHAR(20) DEFAULT 'tblPackstuecke';
  16.  
  17.  
  18.         DECLARE col_names CURSOR FOR
  19.         SELECT column_name,column_key
  20.         FROM INFORMATION_SCHEMA.COLUMNS
  21.         WHERE TABLE_NAME = tabelle
  22.         ORDER BY ordinal_position;
  23.         DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  24.  
  25.         OPEN col_names;
  26.        
  27.        
  28.         the_loop: LOOP
  29.        
  30.            IF done=1 THEN
  31.                 CLOSE col_names;
  32.                 LEAVE the_loop;
  33.             END IF;
  34.            
  35.  
  36.                  FETCH col_names
  37.             INTO col_name, is_primary;  
  38.            
  39.             IF is_primary='PRI' THEN
  40.                 INSERT INTO tblLOG (IDPerson, Tabelle, Spalte, Referenz, Alt, Neu)
  41.                         VALUES (NEW.IDPerson, tabelle, 'Erstellt', 'test', 'NEU', 'NEU');
  42.                                    
  43.            
  44.             ELSE
  45.                                                                                        
  46.                                 INSERT INTO tblLOG (IDPerson, Tabelle, Spalte, Referenz, Alt, Neu)
  47.                         VALUES (NEW.IDPerson, tabelle, col_name, NEW.IDPackstueck , NEW.IDPackstueck , NEW.IDPackstueck);
  48.                    
  49.            END IF;
  50.            
  51.          
  52.         END LOOP the_loop;
  53.          
  54.    
  55. END; //
  56.  
  57. DELIMITER ;