MySQL说:#1336 - 存储函数或触发器中不允许使用动态SQL

时间:2018-03-27 08:46:13

标签: mysql sql triggers subroutine database-trigger

This is main question please help me for this

这是我的代码:

BEGIN   

DECLARE TMPCOL VARCHAR(100);

SET TMPCOL= 'ID';   

SET @s = CONCAT('INSERT INTO TMP(DATA1, DATA2) VALUES ("DATA",OLD.',TMPCOL,');');  

PREPARE stmt1 FROM @s;    

EXECUTE stmt1;   

DEALLOCATE PREPARE stmt1;  

END

1 个答案:

答案 0 :(得分:0)

您不需要动态SQL。这实际上是一样的:

BEGIN   
    INSERT INTO TMP (DATA1, DATA2)
        VALUES ('DATA', OLD.ID);
END;

这应该在触发器中起作用。否则,old未定义。