MySQL 说:#1336 - 存储函数或触发器中不允许使用动态 SQL
Posted
技术标签:
【中文标题】MySQL 说:#1336 - 存储函数或触发器中不允许使用动态 SQL【英文标题】:MySQL said: #1336 - Dynamic SQL is not allowed in stored function or trigger 【发布时间】:2018-03-27 08:46:13 【问题描述】: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】:您不需要动态 SQL。这实际上是相同的:
BEGIN
INSERT INTO TMP (DATA1, DATA2)
VALUES ('DATA', OLD.ID);
END;
这应该在触发器中起作用。否则,old
未定义。
【讨论】:
这是必要的,需要这种动态思维,否则它很容易使用以上是关于MySQL 说:#1336 - 存储函数或触发器中不允许使用动态 SQL的主要内容,如果未能解决你的问题,请参考以下文章
MySQL #1422 存储函数或触发器中不允许显式或隐式提交
mysql视图,存储过程,函数,事务,触发器,以及动态执行sql
MySql 错误:无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用
如何在 MYSQL 中编写可以从触发器和存储函数调用的信号函数?