概述
mysql中,当你在trigger、function中编写动态的sql时,编译时就会出现“Error 1336: Dynamic
SQL is not allowed in stored function or trigger“
trigger:触发器,在执行动作前后触发
function:方法,函数,可以在SQL、存储过程中调用
procedure:存储过程,可以编写比较复杂的逻辑
动态的SQL语句:就是单纯的SQL语句中,含有变量。
出现上述异常的原因就是:
1、 在function或者是trigger里面含有并执行了动态的SQL语句
2、 在function或者是trigger里调用了含有动态SQL语句的存储过程
=> 若单独在存储过程中执行动态的SQL语句是不会报错的,是允许的。
目前最新的mysql版本来说,function、trigger还是不支持动态sql语句,你硬要将动态语句写入trigger、function的话,我建议可以考虑写在存储过程中,然后用程序去调用存储过程。
我之所以写这文档,主要是我遇到了这问题,最后我就只能写存储过程了,具体demo如下:
CREATE DEFINER=`luo`@`%`
PROCEDURE `P_INSERT_ORIGINAL`(IN gatewayID
int,
in customerID long, in version varchar(40))
BEGIN
DECLARE isexist
最后
以上就是阔达音响为你收集整理的mysql 触发器 sql_mysql动态SQL的运用 (trigger、function、procedure)的全部内容,希望文章能够帮你解决mysql 触发器 sql_mysql动态SQL的运用 (trigger、function、procedure)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复