I call the stored procedure from Trigger and I get the following error:
Dynamic SQL is not allowed in a stored function or trigger
Why this happens, dynamic SQL is executed in a stored procedure that is called from Trigger. Maybe this is the problem if there is any workaround?
Edit (added code):
Here is the trigger from the main table:
-- Trigger DDL Statements DELIMITER $$ USE `TestaDataBase`$$ CREATE TRIGGER `TestaDataBase`.`UpdateAuxilaryTable` AFTER INSERT ON `MainTable` FOR EACH ROW BEGIN CALL TestProcedure('Year', 'Person', 'IdPerson', NEW.IdData); END $$
And here is the storage procedure called from the trigger:
DELIMITER $$ CREATE PROCEDURE `TestDataBase`.`TestProcedure` (IN attribute CHAR(64), IN tableName CHAR(64), IN IdTable CHAR(64), IN IdLastRow MEDIUMINT) BEGIN DECLARE selectedValue MEDIUMINT; SET @statement = CONCAT('SELECT ', attribute, ' FROM ', tableName, ' WHERE ', IdTable, ' = ', IdLastRow, ' INTO selectedValue'); PREPARE statementExecute FROM @statement; EXECUTE statementExecute ; ... ... END
source share