UpdateDatabase/MysqlLinks.php
[Pman.Core] / UpdateDatabase / MysqlLinks.php
index c603854..ab87aaf 100644 (file)
@@ -164,6 +164,13 @@ class Pman_Core_UpdateDatabase_MysqlLinks {
             
             // throw example.. UPDATE `Error: invalid_id_test` SET x=1;
             
+            if (!isset($this->schema[$target_table])) {
+                echo "Skip $tbl\n";
+                return;
+            }
+        
+            
+            
             $q = DB_DataObject::factory('core_enum');
             $q->query("
                 DROP TRIGGER IF EXISTS `{$target_table}_before_delete` ;
@@ -193,6 +200,14 @@ class Pman_Core_UpdateDatabase_MysqlLinks {
                     END IF;
                 ";
             }
+            
+            $ar = $this->listTriggerFunctions($tbl, 'delete');
+            foreach($ar as $fn=>$col) {
+                $trigger .= "
+                    CALL $fn( OLD.{$col});
+                ";
+            }
+            
             $trigger .= "
             END 
            
@@ -257,7 +272,7 @@ class Pman_Core_UpdateDatabase_MysqlLinks {
                 
                 
             }
-              $ar = $this->listTriggerFunctions($tbl, 'update');
+            $ar = $this->listTriggerFunctions($tbl, 'insert');
             foreach($ar as $fn=>$col) {
                 $trigger .= "
                     CALL $fn( NEW.{$col});
@@ -272,7 +287,7 @@ class Pman_Core_UpdateDatabase_MysqlLinks {
             //DB_DAtaObject::debugLevel(1);
             $q = DB_DataObject::factory('core_enum');
             $q->query($trigger);
-             
+            echo "CREATED TRIGGER {$tbl}_before_insert\n";
             
             
             
@@ -381,16 +396,17 @@ class Pman_Core_UpdateDatabase_MysqlLinks {
                             AND
                             ROUTINE_NAME LIKE '" . $q->escape("{$table}_trigger_")  . "%'
                             AND
-                            ROUTINE_TYPE = 'CALL'
+                            ROUTINE_TYPE = 'PROCEDURE'
                             
             ");
             while ($q->fetch()) {
-                $cache[$table] = $q->SPECIFIC_NAME;
+                $cache[$table][] = $q->SPECIFIC_NAME;
             }
+            
         }
         // now see which of the procedures match the specification..
         $ret = array();
-        foreach($cache[$tables] as $cname) {
+        foreach($cache[$table] as $cname) {
             $bits = explode("_before_{$type}_", $cname);
             if (count($bits) < 2) {
                 continue;