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的主要内容,如果未能解决你的问题,请参考以下文章