有这样一个需求,要求在mysql存储过程中使用到事务,而且执行的是动态的sql语句
代码如下:
begin declare in_data text; /** 标记是否出错 */ declare errno int default '0'; /** 如果出现sql异常,则将t_error设置为1后继续执行后面的操作 */ declare continue handler for sqlexception begin rollback;set errno = 1; end; start transaction; -- 传入的语句处理过程 prepare stmt from @in_data; execute stmt; if (errno =1) then rollback; else commit; end if; select errno;end
调用 :set @in_data = 'insert into accounts (`userid`,`password`) value (122222222,2),(22222,11)';call syn_updata(@in_data);
其实这个存储过程只要是用到事务的地方都可以用到,因为执行的条件是动态的。