4

Here is my trigger:

DELIMITER //
CREATE TRIGGER vf_update_checksum AFTER INSERT ON `vf_params` FOR EACH ROW BEGIN
   SET @last_param_id = LAST_INSERT_ID();
   SET @object_id = (SELECT p.object_id
                                FROM vf_params as p
                            WHERE p.id = @last_param_id
                            LIMIT 1);

   SET @object_type = (SELECT ot.name
                                    FROM vf_objects as o
                            LEFT JOIN vf_objectTypes as ot ON o.object_type_id = ot.object_type_id
                                WHERE o.object_id = @object_id
                                    LIMIT 1);

   SET @params = (SELECT GROUP_CONCAT(COALESCE(CAST(p.int_value AS CHAR), CAST(p.float_value AS CHAR), p.text_value, p.array_value, CAST(p.reference_value AS CHAR)) SEPARATOR '') AS VALUE 
                    FROM vf_params as p
                        WHERE p.object_id = @object_id
                            GROUP BY 'all'
                                LIMIT 1);

   SET @object_heap = CONCAT(@object_type, @params);
   SET @chksm = MD5(@object_heap);

   UPDATE vf_objects as o SET o.checksum = @chksm WHERE o.object_id = @object_id;
END
//
DELIMITER ;

And I'm tried to place this code into strign and execute it with PDO, but it fails to create trigger. I think, the problem is in DELIMITER //, but it can't be created without it (or it can be?). Also I tried $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); and than $pdo->exec()...the same thing.

What is the way to create such trigger with PDO??

ovnia
  • 2,412
  • 4
  • 33
  • 54

0 Answers0