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
??