1、mysql存储过程是否是一个事务

我的mysql数据库autocommit是on,数据迁移时运行一个没有设置事务的存储过程,执行一部分后出错停止了,执行的那部分提交到了数据库,说明mysql存储过程不是一个事务。如果需要设置为一个事务,在存储过程主体开始部分指定开始一个事务。declare之后start transaction,后面一定要加commit,两者之间是一个事务。

2、mysql存储过程是否需要commit;

如果是支持事务的引擎,如innodb,支持自动提交;
可以使用**mysql> show variables like ‘%autocommit%’;**查看,是on时就是会自动提交,是off时,不会自动提交,需要手动commit。