Trigger からストアド プロシージャを呼び出すと、次のエラーが発生します。
動的 SQL は、ストアド関数またはトリガーでは許可されていません
なぜこれが起こっているのか、トリガーから呼び出されるストアドプロシージャで動的SQLが実行されています。これが問題なのかもしれませんが、もしそうなら回避策はありますか?
編集(コードを追加):
マスターテーブルからのトリガーは次のとおりです。
-- Trigger DDL Statements
DELIMITER $$
USE `TestaDataBase`$$
CREATE TRIGGER `TestaDataBase`.`UpdateAuxilaryTable`
AFTER INSERT ON `MainTable` FOR EACH ROW
BEGIN
/* Here we call stored procedure with parameter id of newly inserted row. */
CALL TestProcedure('Year', 'Person', 'IdPerson', NEW.IdData);
END
$$
そして、トリガーから呼び出されるストア プロシージャは次のとおりです。
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