普通事务
以 begin / start transaction 开始,commit / rollback 结束的事务。或者是带有保存点 savepoint 的事务。
2. 链式事务
一个事务在提交的时候自动将上下文传给下一个事务,也就是说一个事务的提交和下一个事务的开始是原子性的,下一个事务可以看到上一个事务的处理结果。MySQL 的链式事务靠参数 completion_type 控制,并且回滚和提交的语句后面加上 work 关键词。
3. 嵌套事务
有多个 begin / commit / rollback 这样的事务块的事务,并且有父子关系。子事务的提交完成后不会真的提交,而是等到父事务提交才真正的提交。
4. 自治事务
内部事务的提交不随外部事务的影响,一般用作记录内部事务的异常情况。MySQL 不支持自治事务,但是某些场景可以用 MySQL 的插件式引擎来变相实现。
前几日写存储过程,使用嵌套if语句的时候,碰到一个奇怪的问题,多方找原因无果。后发现是一个很sb的问题。。。
if condition1 then
if condition1.1 then
do something1.1
else if condition1.2 then
do something1.2
else -- 报错的地方
do something1.3
endif
else
do something2.2
endif
如上,else那里一直在报错。
使用了排除法,把else那块去掉,仍报错。
整个中间的if那段去掉,编译成功。
else if和else去掉,编译成功。
else if去掉,编译成功。
好吧,else if的问题。elseif应该是没有空格的!!!
排除法是个好方法,细心是个好习惯
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)